Elasticsearch 过滤

_score(分数)字段是衡量文档与搜索条件匹配程度的一个指标。分数越高,文档越相关,分数越低,文档越不相关。并不总是需要生成分数,需不需要Elasticsearch会自动判断,以避免计算无用的分数。

布尔查询还支持filter子句,用于设置过滤条件。过滤条件不影响文档的相关性分数。

下面的例子,使用布尔查询,返回余额在20000到30000之间的所有帐户。

API

GET /bank/_search
{
  "query": {
    "bool": {
      "must": { "match_all": {} },
      "filter": {
        "range": {
          "balance": {
            "gte": 20000,
            "lte": 30000
          }
        }
      }
    }
  }
}

CURL

curl -X GET "localhost:9200/bank/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "bool": {
      "must": { "match_all": {} },
      "filter": {
        "range": {
          "balance": {
            "gte": 20000,
            "lte": 30000
          }
        }
      }
    }
  }
}
'

上面的布尔查询中,包含一个match_all查询(查询部分)和一个range查询(筛选部分)。过滤条件中的range查询不影响文档的相关性分数计算。

除了match_allmatchboolrange查询,还有其他许多查询类型,工作原理大同小异,可参考相关资料。



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载