2016-10-05 12 views
0

私は正常に動作するパーコレータに対してドキュメントクエリを使用しています。クエリーIDを使用して、どのドキュメントがパーコレートするかを判断しようとすると、結果が返されません。たとえば:elasticsearchパーコレータフィルタに失敗しました

{ 
    "doc" : { 
    "text" : "This is the text within my document" 
    }, 
    "highlight" : { 
    "order" : "score", 
    "pre_tags" : ["<example>"], 
    "post_tags" : ["</example>"], 
    "fields" : { 
    "text" : { "number_of_fragments" : 0 } 
    } 
}, 
"filter":{"ids":{"values":[11,15]}} 
, 
"size" : 100 
} 

私はそれらのIDが正しいことを確認するために知っているが、オールウェイズ"matches" : [ ]を得ます。私がフィルタを使用しないとき、ESは正しいマッチを検索します。 ご協力いただきありがとうございます。

答えて

0

私はそれを解決したと思います。 the filter only works on the "metadata" fieldsと思われます。つまり、必要に応じてフィルタリングするためにパーコレータでインデックスされたクエリにカスタマイズされたフィールドを追加する必要があります。

{ 
    "query" : { 
     "match_phrase" : { 
     "text" : "document" 
     } 
    }, 
    "id" : 11 
    } 

フィルタ基準として後で使用するために、「手動」冗長IDフィールドを追加する:私の前の例を使用 、Iのようなパーコレータークエリでインデックスを有するであろう。それだけでパーコレータークエリを使用するためには

{ 
    "doc" : { 
    "text" : "This is the text within my document" 
    }, 
"filter":{"match":{"id":11}}, 
    "highlight" : { 
    "order" : "score", 
    "pre_tags" : ["<example>"], 
    "post_tags" : ["</example>"], 
    "fields" : { 
    "text" : { "number_of_fragments" : 0 } 
    } 
}, 
"size" : 100 
} 

:パーコレーション時 は、あなたのようなものを使用する必要があります。相補的な情報はhereです。

関連する問題