_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_all
、match
、bool
和range
查询,还有其他许多查询类型,工作原理大同小异,可参考相关资料。