2017-01-23 172 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