elasticsearch
最典型的是两个应用场景:全文检索 和 复杂查询。
正排索引,也叫正向索引(Forward Index),是通过文档ID去查找关键词(文档内容)。
倒排索引,也叫反向索引(Inverted Index),是通过关键词查找文档ID。
-
must:其查询子句必须全部被满足,逻辑相当于 and ,并且会计算分数。
-
filter:与 must 作用一样,但是不会计算分数。在 filter context 下的查询子句不会计算分数且会被缓存,不会计算分数,所以查询会快
-
should:其查询子句应该被满足,也就是不一定都满足,逻辑相当于 or。
- 如果 bool query 是在 query context 下,且包含 must 子句或 filter 子句,此时只要满足 must 子句或 filter 子句里的条件就算匹配上,should 子句里的条件不会对结果有影响,只会影响分数的计算。
- 如果 bool query 是在 filter context 下,且没有包含 must 子句和 filter 子句,此时必须任意一个 should 查询条件满足才算匹配上。
以上行为都受 minimum_should_match 参数影响,也就是需要满足的 should 子句查询条件的最小数目。
-
must_not:其查询子句必须都不被满足。当子句是在 filter context 下时,不会计算分数且会被缓存。
作者:邦就是我53674
链接:https://juejin.cn/post/6936487066272432142
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://juejin.cn/post/6936487066272432142
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
POST _search
{
"query": {
"bool" : {
"must" : {
"term" : { "user" : "kimchy" }
},
"filter": {
"term" : { "tag" : "tech" }
},
"must_not" : {
"range" : {
"age" : { "gte" : 10, "lte" : 20 }
}
},
"should" : [
{ "term" : { "tag" : "wow" } },
{ "term" : { "tag" : "elasticsearch" } }
],
"minimum_should_match" : 1,
"boost" : 1.0
}
}
}


浙公网安备 33010602011771号