首页 > 解决方案 > 如何在 ElasticSearch 中使用具有 _score 值的范围函数?

问题描述

我正在使用 ElasticSearch 来搜索和过滤数据。目前,我在尝试查询时得到了所有相关的搜索响应。例如-当我尝试获取 City:New York 时,我得到了所有带有单词“New”和“York”的值,而我想获取这些数据“城市:纽约”。

因此,我认为 _score 值可能对这种情况有所帮助,因此我尝试使用 range 函数获取大于或等于 20 的 _score 值。

这是我在kibana中尝试过的方式,但没有奏效。先感谢您 !!

POST /employee/_search 
{
  "query": {
    "bool": {
      "should": [
        {"match": {"name": "John doe"}},
        {"match": {"city": "New York"}},
        {"match": {"school": "Oxford private school "}},
        {"match": {"address": "Victoria Avenue"}},
        {"range": {"_score" : { "gte" : 22 }}}
      ],
      "minimum_should_match": 1
    }
  }
}

标签: elasticsearch

解决方案


我不认为_score在这种情况下进行查询会有所帮助,因为据我所知,这_score是由 ES 引擎计算的,因此不能保证具有确切的值。

因此,您可以使用全文搜索而不是术语搜索。因此,没有分析器适用于此文本字段。

另请参阅https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html


推荐阅读