我试图查询elasticsearch以便找出使用某种产品购买了哪些产品。
我的数据从平面文件进入logstash。
OrderNumber ProductName order1 Chicken order2 Banana order3 Chicken order1 Cucumber order2 Chicken order3 Apples order1 Flour order2 Rice order3 Nuts
如您在上面看到的,我有一个 鸡肉* 的 产品名称 ,它以不同的 订单号出现 。 ***
OrderNumber ProductName order1 Chicken order3 Chicken order2 Chicken
这就是我想要实现的目标:
步骤1:查找所有包含鸡肉的订单号
第2步:如果上述订单中有鸡肉,请给我购买的所有其他产品
结果:
OrderNumber ProductName order1 Cucumber order2 Banana order3 Apples order1 Flour order2 Rice order3 Nuts
到目前为止,这是我为 Step1 所做的尝试:
询问
{ "query" : { "match" : { "ProductName" : "Chicken" } } }
结果
"hits" : { "total" : 3, "max_score" : 11.378191, "hits" : [ { "_index" : "hello", "_type" : "logs", "_id" : "AVmxaChupyZuCjD89xPX", "_score" : 11.378191, "_source" : { "message" : "order1\Chicken\r", "path" : "C:\\utils\\Elk\\logstash\\bin\\product.log", "OrderNumber" : "order1", "ProductName" : "Chicken\r" }}, { "_index" : "hello", "_type" : "logs", "_id" : "AVmxaChupyZuCjD89xPX", "_score" : 11.378191, "_source" : { "message" : "order3\Chicken\r", "path" : "C:\\utils\\Elk\\logstash\\bin\\product.log", "OrderNumber" : "order3", "ProductName" : "Chicken\r" } }, { "_index" : "hello", "_type" : "logs", "_id" : "AVmxaChupyZuCjD89xPX", "_score" : 11.378191, "_source" : { "message" : "order2\Chicken\r", "path" : "C:\\utils\\Elk\\logstash\\bin\\product.log", "OrderNumber" : "order2", "ProductName" : "Chicken\r" }
我对如何完成 步骤2 感到非常困惑,因为我是Elasticsearch的新手,请帮忙?
谢谢
要搜索找到的订单号Chicken和商品名称不是的文档,Chicken可以使用以下查询:
Chicken
{ "query" : { "and" : [ { "terms" : { "OrderNumber" : ["order1", "order2", "order3"] } }, { "not" : { "term" : { "ProductName" : "Chicken" } } } ] } }