ElasticSearch DSL Bool查询

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)。

相关推荐

  1. 数据库查询--简单查询

    2023-12-23 23:06:03       31 阅读
  2. 数据库查询--条件查询

    2023-12-23 23:06:03       35 阅读
  3. mysql查询

    2023-12-23 23:06:03       48 阅读
  4. elasticsearch查询

    2023-12-23 23:06:03       57 阅读
  5. 查询

    2023-12-23 23:06:03       42 阅读
  6. MySQL查询

    2023-12-23 23:06:03       40 阅读
  7. MySQL【查询

    2023-12-23 23:06:03       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-23 23:06:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-23 23:06:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-23 23:06:03       82 阅读
  4. Python语言-面向对象

    2023-12-23 23:06:03       91 阅读

热门阅读

  1. MyBatis的延迟加载(懒加载)

    2023-12-23 23:06:03       63 阅读
  2. SpringBoot整合Mybatis遇到的常见问题及解决方案

    2023-12-23 23:06:03       62 阅读
  3. 点云分割--基于PatchWork++的地面点云分割

    2023-12-23 23:06:03       69 阅读
  4. vue2与vue3的区别

    2023-12-23 23:06:03       51 阅读
  5. 7-9 装箱问题

    2023-12-23 23:06:03       63 阅读
  6. C++面向对象(OOP)编程-位运算详解

    2023-12-23 23:06:03       53 阅读