Elasticsearch:如何将dismax查询与过滤器

时间:2017-05-04 15:01:45

标签: elasticsearch dismax

我很难弄清楚如何使用elsticsearch dis_max查询和过滤器。

当我这样做时:

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

它说 [dis_max]查询不支持[过滤器] 。但我可以使用带有过滤别名的dis_max查询。

Ex:我创建了一个带有如下定义的过滤器的别名,并在执行dis_max查询时使用它,并且它可以很好地工作。

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

因此,应该在不创建别名的情况下实现此目的。任何人都可以告诉我该怎么做。

1 个答案:

答案 0 :(得分:7)

如果有人正在寻找答案,我最后在必须类中使用bool查询和我的dis_max查询,并简单地过滤为bool查询的过滤器部分。

例如:

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