仅查询ElasticSearch中的评分增加?

时间:2015-09-23 18:42:52

标签: elasticsearch

我想在elasticsearch中写一个查询只是为了得分可以任何人请告诉我我怎么能这样做我的查询也在下面给出“minimum_should_match”:0不能使用应该,如果任何查询匹配area2和area1然后我想提高结果的分数现在我怎么能实现,任何人都可以告诉我最后的查询,我应该写?

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

1 个答案:

答案 0 :(得分:1)

您是否希望获得与商店搜索匹配的所有记录,并在address.area1和/或address.area2字段值与区域搜索匹配时提升结果?

您正在使用的bool语法已关闭。需要修复匹配子句以满足Elasticsearch的期望,并且不需要额外的嵌套bool。见Elasticsearch Bool Query

{
    "query" : {
        "bool" : {
            "must" : {
                "query_string" : {
                    "query" : <SHOP_SEARCH>,
                    "fields" : ['shop_name']
                }
            },
            "should" : [
                {
                    "match" : {
                        "address.area1" : {
                            "query" : <SEARCH_AREA1>,
                            "operator" : "and",
                            "boost" : <CUSTOM_BOOST1>
                        }
                    }
                },
                {
                    "match" : {
                        "address.area2" : {
                            "query" : <SEARCH_AREA2>,
                            "operator" : "and",
                            "boost" : <CUSTOM_BOOST2>
                        }
                    }
                }
            ]
        }
    }
}

我认为通过该查询,您可以期待以下内容:

  • 仅与商店搜索匹配的结果
  • 结果与区域字段不匹配但与商店搜索匹配 - 这是由于匹配条款的存在
  • 结果的顺序通常是先匹配两个区域的结果,然后是匹配其中一个区域的结果,然后是既不匹配区域也不保证的结果。了解有关Elasticsearch评分的更多信息

您可能希望查看使用query_string获得的所有内容。