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 查询一起使用在 must 类和 filter 中,就像 bool 查询的过滤器部分一样。

前任:

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