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

ama*_*rma 2 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
                } 
              }
Run Code Online (Sandbox Code Playgroud)

Pet*_*ses 5

在您的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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)