2016-04-25 8 views
1

boolクエリでelasticsearchインデックスをクエリしています。クエリ自体は、私は結果をマッチ1(ものが)であったすべてのこれらのクエリのかを識別することができるようにしたい、このbool query elasticsearchで一致するクエリを特定します。

{ 
      "query": { 
       "bool": { 
        "should": [ 
         {"multi_match": { 
          "fields": ["field1", "field2"], 
          "query": self.cleaned_stemmed_phrase, 
          "type": "phrase", 
          "fuzziness":"AUTO" 
             }}, 
         {"multi_match": { 
          "fields": ["field3"], 
          "query": self.cleaned_stemmed_phrase, 
          "fuzziness":"AUTO", 
          "boost": 4 
             }}, 
         {"multi_match": { 
          "fields": ["field4"], 
          "query": self.cleaned_stemmed_phrase, 
          "fuzziness":"AUTO" 
             }}, 
         {"multi_match": { 
          "fields": ["field5", "filed6"], 
          "query": self.spaces_removed, 
          "fuzziness":"AUTO" 
             }}, 
         {"multi_match": { 
          "fields": ["field7", "field8"], 
          "query": self.no_space_stems, 
          "fuzziness":"AUTO" 
             }} 
         ] 
      } 
     } 
    } 

と同様の構造を有しています。これを可能にするelasticsearchの組み込みメソッドがありますか、それとも手動で行う必要がありますか?

答えて

1

named queriesを使用して、結果に一致するクエリの名前を取得できます。

{ 
     "query": { 
      "bool": { 
       "should": [ 
        {"multi_match": { 
         "fields": ["field1", "field2"], 
         "query": self.cleaned_stemmed_phrase, 
         "type": "phrase", 
         "fuzziness":"AUTO", 
    add name --->  "_name": "query1" 
            }}, 
        {"multi_match": { 
         "fields": ["field3"], 
         "query": self.cleaned_stemmed_phrase, 
         "fuzziness":"AUTO", 
         "boost": 4, 
    add name --->  "_name": "query2" 
            }}, 
        {"multi_match": { 
         "fields": ["field4"], 
         "query": self.cleaned_stemmed_phrase, 
         "fuzziness":"AUTO", 
    add name --->  "_name": "query3" 
            }}, 
        {"multi_match": { 
         "fields": ["field5", "filed6"], 
         "query": self.spaces_removed, 
         "fuzziness":"AUTO", 
    add name --->  "_name": "query4" 
            }}, 
        {"multi_match": { 
         "fields": ["field7", "field8"], 
         "query": self.no_space_stems, 
         "fuzziness":"AUTO", 
    add name --->  "_name": "query5" 
            }} 
        ] 
     } 
    } 
} 

は、その後の結果に、あなたは、ドキュメントにマッチしたクエリ/ IESの名前でmatched_queries配列を取得します。

"_source": { 
    ... 
}, 
"matched_queries": [ 
    "title_query" 
], 
+0

トリックVal!ありがとう(: –

+0

うれしいよ! – Val

関連する問題