8

フィルターで elsticsearch dis_max クエリを使用する方法を理解するのに苦労しています。

私がこれを行うとき:

{
    "query": {
        "dis_max": {
            "queries": [{
                "multi_match": {}
            },
            { 
                "multi_match": {}
            }],
            "filter": {
                //Term filter
            }           
        }
    }
}

[ dis_max ] クエリは [filter] をサポートしていません。しかし、フィルタリングされたエイリアスで dis_max クエリを使用できます。

例: 以下のように定義されたフィルターでエイリアスを作成し、dis_max クエリの実行中に同じものを使用すると、完全に機能します。

 {
   "add" : {
       "index" : "test1",
       "alias" : "alias1",
       "filter" : { //Term filter }
    }
 }

したがって、エイリアスを作成せずにこれを達成する方法があるはずです。誰でも方法を教えてください。

4

1 に答える 1

17

誰かが答えを探している場合、私は bool クエリのフィルター セクションとして、必要なクラスとフィルターで dis_max クエリを使用して bool クエリを使用することになりました。

元:

{
    "query": {
        "bool": {
            "must": {
                "dis_max": {
                    "queries": [{
                         "multi_match": {}
                     },
                     { 
                         "multi_match": {}
                     }]
                }
            }
            "filter": {
                //Term filter
            }           
        }
    }
}
于 2017-05-05T18:54:24.573 に答える