Elasticsearch:如何使用带过滤器的 dismax 查询

Elasticsearch: how to use dismax query with filter

我很难弄清楚如何使用带过滤器的 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 }
    }
 }

所以应该有某种方法可以在不创建别名的情况下实现这一点。谁能告诉我怎么做。

如果有人在寻找答案,我最终将 bool 查询与我的 dis_max 查询一起使用 class 并简单地作为 bool 查询的过滤器部分进行过滤。

例如:

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