在OR条件过滤器下为查询提供不同的Boost

时间:2013-08-09 16:23:45

标签: elasticsearch

有没有办法在OR条件过滤器中对查询进行不同的提升?我希望看到与第一个查询匹配的结果与第二个查询匹配的结果。

这是我的查询的一部分:

 {
               "or": [
                            {
                                "query": {
                                    "query_string": {
                                        "query": "(field_state:ALL OR field_state:'WA') AND type:incentive"
                                    }
                                }
                            },
                            {
                                "query": {
                                    "query_string": {
                                        "query": "* AND NOT (type:adcampaign OR type:incentive OR type:page_simple OR type:page OR type:glossary_item OR type:product OR type:lighting_option)"
                                    }
                                }
                            }
                        ]
                    }

1 个答案:

答案 0 :(得分:0)

基于此处的ES文档(http://www.elasticsearch.org/guide/reference/query-dsl/query-string-query/),是的,您可以。 boostquery_string查询类型的列出选项。

虽然未经测试,但我认为这样的事情可以解决问题:

{
    "or": [
        {
            "query": {
                "query_string": {
                    "query": "(field_state:ALL OR field_state:'WA') AND type:incentive",
                    "boost": 10.5
                }
            }
        },
        {
            "query": {
                "query_string": {
                    "query": "* AND NOT (type:adcampaign OR type:incentive OR type:page_simple OR type:page OR type:glossary_item OR type:product OR type:lighting_option)"
                }
            }
        }
    ]
}