2017-01-23 11 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を含むすべての注文番号をルックアップそれも私と一緒に購入された他のすべての製品を与える

再SULT:

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

これは私がステップ1のためにこれまでにしようとしているものです:

クエリ

{ 
    "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以外の製品名を持つドキュメントを検索するおかげ

答えて

1

は、あなたが次のクエリを使用することができます。

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

@khachickは、ありがとう – adz