这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战java
本Elasticsearch相关文章的版本为:7.4.2python
Elasticsearch的bool查询是使用一个或多个bool查询子句构建的,每一个子句都是如下特定bool类型:c++
bool类型 | 描述 | 是否参与评分 |
---|---|---|
must | must里面的全部子句都知足的文档才返回 | 是 |
should | 应该知足should里面的0个或多个子句的文档才返回 | 是 |
must_not | must_not里面的子句不能出如今文档里 | 否 |
filter | 必须知足filter子句的文档才返回 | 否 |
bool查询遵循more-matches-is-better的原则。意味着知足must和should子句查询的分数将会汇总到一块儿做为最后的_scorre评分。filter和must_not的子句不归入到评分范围,仅进行过滤文档 下面的查询语句就是查找获取知足如下条件的候选人:golang
algorithm
的;it
行业经验的;POST /candidate/_search
{
"query": {
"bool" : {
"must" : {
"term" : { "tag" : "algorithm" }
},
"filter": {
"term" : { "tag" : "it" }
},
"must_not" : {
"range" : {
"age" : { "gte" : 36, "lte" : 18 }
}
},
"should" : [
{ "term" : { "tag" : "python" } },
{ "term" : { "tag" : "golang" } },
{ "term" : { "tag" : "c++" } },
{ "term" : { "tag" : "java" } }
],
"minimum_should_match" : 1,
"boost" : 1.0
}
}
}
复制代码
boosting查询返回知足positive子句的文档,而且同时下降知足negative子句的文档的相关性得分。这样,咱们能够使用boosting
查询将某些文档相关性下降而不将它们从搜索结果中排除。
下面的查询语句将会获得如下文档:编程
GET /bank/_search
{
"query": {
"boosting" : {
"positive" : {
"term" : {
"hobby" : "apple"
}
},
"negative" : {
"term" : {
"hobby" : "chips"
}
},
"negative_boost" : 0.5
}
}
}
复制代码
boosting查询适合挑选最重要的但容许存在某些不过重要的条件的文档。markdown