应该在Elasticsearch中使用“AND”运算符进行查询?

时间:2015-09-24 14:50:54

标签: elasticsearch

我想在里面写一个查询,当两者都匹配文件然后我会将分数提高2但是当他们中的任何一个或者没有一个匹配时我不想要任何提升我的代码现在在下面给出了有人请告诉我如何写我的“应该”查询,以便我可以做我的工作。

query: {
                bool: {
                  must: {
                    query_string: {
                      query: shop_search,
                      fields: ['shop_name'],
                      boost: 3.0
                    }
                  }, should: [
                    {
                      term : { 'address.area2' : search_area2 }
                    },
                    {
                      term : { "address.area1" : search_area1 }
                    }
                  ], "boost": 2.0
                } 
              }

1 个答案:

答案 0 :(得分:4)

在你的should子句中嵌套另一个布尔查询:

"query": {
    "bool": {
        "must": {
            "query_string": {
                "query": shop_search,
                "fields": ["shop_name"],
                "boost": 3.0
            }
        },
        "should": {
            "bool": {
                "must": [{
                    "term": {
                        "address.area2": search_area2
                    }
                }, {
                    "term": {
                        "address.area1": search_area1
                    }
                }],
                "boost": 2.0
            }
        }
    }
}