2016-05-17 2 views
0

Percolate APIを使用してESに格納されているブールクエリを取得しようとしています。私はこのようなレコードを挿入しています弾性検索Percolateブールクエリ

インデックスマッピングが

curl -XPUT 'localhost:9200/my-index' -d '{ 
    "mappings": { 
    "taggers": { 
     "properties": { 
     "content": { 
      "type": "string" 
     } 
     } 
    } 
    } 
}' 

以下の通りである

(例の下で与えられたクエリが適切なブール形式(AND、OR、NOTなど)を含有する)

curl -XPUT 'localhost:9200/my-index/.percolator/1' -d '{ 
     "query" : { 
      "match" : { 
       "content" : "Audi AND BMW" 
      } 
     } 
}' 

そして、一致するクエリを取得するためにドキュメントを投稿しています。上記の場合

curl -XGET 'localhost:9200/my-index/my-type/_percolate' -d '{ 
    "doc" : { 
     "content" : "I like audi very much" 
    } 
}' 

ブールクエリは「アウディ BMW」であるため、レコードが来ないはずですが、それはまだレコードを与えています。それは、の状態を無視していることを意味します。私はそれがブーリアンクエリのために働いていない理由を理解することができません。

答えて

0

あなたはmatchクエリが(彼らは通常のトークンandのように扱うだろう)AND演算子を理解していない、代わりにこのクエリを浸透する必要がありますが、query_stringありません。

curl -XPUT 'localhost:9200/my-index/.percolator/1' -d '{ 
    "query" : { 
     "query_string" : { 
      "query" : "Audi AND BMW", 
      "default_field": "content" 
     } 
    } 
}'