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
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
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
    }
  }
}

 

  

posted @ 2023-08-22 15:24  15375357604  阅读(14)  评论(0编辑  收藏  举报