2017-01-23 170 views
1

我正在试图查询elasticsearch,以便找出用某种产品购买了哪些产品。查询Elasticsearch JSON

我的数据从平面文件进入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步:查找含有鸡

OrderNumber ProductName 
    order1 Chicken   
    order3 Chicken 
    order2 Chicken 

步骤2的所有订单编号:如果上面的命令有鸡它给我所有其他产品,也与它一起购买

Re SULT:

 OrderNumber ProductName 
    order1  Cucumber 
    order2  Banana 
    order3  Apples 
    order1  Flour 
    order2  Rice 
    order3  Nuts 

这是我到目前为止已经试过了第一步

查询

{ 
    "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很新,请帮忙?

感谢

回答

1

要搜索比其他Chicken发现Chicken订单编号和产品名称,可以使用下面的查询文件:

{ 
    "query" : { 
    "and" : [ 
     { 
     "terms" : { 
      "OrderNumber" : ["order1", "order2", "order3"] 
     } 
     }, 
     { 
     "not" : { 
      "term" : { 
      "ProductName" : "Chicken" 
      } 
     } 
     } 
    ] 
    } 
} 
+0

@khachick,谢谢 – adz