ElasticSearch DSL Bool查询

2023-12-22 06:33:13

Bool 查询的三个主要成分:must、should 和 must_not。

must:

这个条件是必须满足的。比如,你想找一本关于 Python 编程的书,那么你会在 must 里写上关键词 “Python”。

should:

这相当于你的偏好条件,可以有多个。比如,你希望这本书是最近出版的,或者是评分比较高的。这些条件用 should 来表示,ElasticSearch 会尽量满足它们,但如果不满足也没关系。

must_not:

这是一些你不希望包含在结果中的条件。比如,你可能不喜欢读电子书,那么你可以在 must_not 里写上 “电子书” 这个条件。

{
  "bool": {
    "must": {
      "match": { "title": "Python" }
    },
    "must_not": {
      "match": { "format": "电子书" }
    },
    "should": [
      { "range": { "publish_year": { "gte": 2022 } } },
      { "range": { "rating": { "gte": 4 } } }
    ]
  }
}

在这个查询中,我们使用了 must 条件确保标题包含 “Python”,must_not 条件排除了电子书,而 should 条件包含了发布年份在 2022 年之后和评分在 4 分以上的偏好条件。
在range语句中,包括大于(gt)、大于等于(gte)、小于(lt)和小于等于(lte)。

文章来源:https://blog.csdn.net/Asura_____/article/details/135143548
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。