ES多条件查询

这篇具有很好参考价值的文章主要介绍了ES多条件查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景:想要查询出设备id 为 3 的所有设备上报信息,并且上报信息的开始时间或结束时间只要有一个满足 在 某个时间段里即可。

在 Elasticsearch 中,您可以使用布尔查询来实现同时满足条件1并且满足条件2或条件3中的一个的查询。具体来说,您可以使用“must”子句来指定满足条件1的查询,使用“should”子句来指定满足条件2或条件3中的一个的查询,并将它们组合起来。

以下是一个示例查询:

GET /my_index/_search
{
  "query": {
    "bool": {
      "must": [
        { "term": { "deviceId": 3 } }
      ],
      "should": [
              {
                "range": {
                  "startTime": {
                    "gte": "2023-10-11T23:12:02+08:00",
                    "lte": "2023-10-11T23:12:02+08:00",
                    "time_zone": "+08:00"
                  }
                }
              },
              {
                "range": {
                  "endTime": {
                    "gte": "2023-10-11T23:12:02+08:00",
                    "lte": "2023-10-11T23:12:02+08:00",
                    "time_zone": "+08:00"
                  }
                }
              }
            ],
      "minimum_should_match": 1
    }
  }
}

“minimum_should_match”参数被设置为1,这意味着至少有一个“should”子句必须匹配才能返回结果。

还有另外一种写法:

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "deviceId": 3
          }
        },
        {
          "bool": {
            "should": [
              {
                "range": {
                  "startTime": {
                    "gte": "2023-10-11T23:12:02+08:00",
                    "lte": "2023-10-11T23:12:02+08:00",
                    "time_zone": "+08:00"
                  }
                }
              },
              {
                "range": {
                  "endTime": {
                    "gte": "2023-10-11T23:12:02+08:00",
                    "lte": "2023-10-11T23:12:02+08:00",
                    "time_zone": "+08:00"
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}

具体解释如下:文章来源地址https://www.toymoban.com/news/detail-491989.html

  • “query”: 指定查询语句。
  • “bool”: 使用布尔查询,实现多个查询条件的组合。
  • “must”: 必须匹配的查询条件,相当于逻辑上的"AND"。
  • “term”: 匹配一个精确值的查询。
  • “deviceId”: 待匹配的字段名。
  • 3: 待匹配的值。
  • “bool”: 使用布尔查询,实现多个查询条件的组合。
  • “should”: 至少匹配一个查询条件,相当于逻辑上的"OR"。
  • “range”: 匹配一个数值或日期范围内的查询。
  • “startTime”: 待匹配的字段名。
  • “endTime”: 待匹配的字段名。
  • “gte”: 大于或等于(greater than or equal to)指定值。
  • “lte”: 小于或等于(less than or equal to)指定值。
  • “time_zone”: 指定时区。

到了这里,关于ES多条件查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES:多值(in)查询和条件批量删除

    Elasticsearch 查询删除语句 查询结果 查询结果 多值批量查询结果如下 删除语句 删除结果如下

    2024年02月11日
    浏览(52)
  • ElasticSearch系列 - SpringBoot整合ES:组合多个查询条件 bool 查询

    01. ElasticSearch 布尔查询是什么? 在实际应用中,我们很有可能会查询多个值或字段。 一个 bool 查询由三部分组成: must:所有的语句都必须(must) 匹配,与 AND 等价。 must_not:所有的语句都不能(must not)匹配,与 NOT 等价。 should:至少有一个语句要匹配,与 OR 等价。 02.

    2023年04月08日
    浏览(74)
  • ElasticSearch第十四讲 ES有条件复杂查询

    模糊匹配 模糊匹配主要是针对文本类型的字段,文本类型的字段会对内容进行分词,对查询时,也会对搜索条件进行分词,然后通过倒排索引查找到匹配的数据,模糊匹配主要通过match等参数来实现 match : 通过match模糊匹配条件内容 prefix : 前缀匹配 regexp : 通过正则表达

    2024年02月03日
    浏览(48)
  • 使用ES同一个字段,不同条件or查询

    需求: type 字段是使用逗号分隔的字符串,要求多个 值只要与此字段 模糊匹配,即可成功 布尔查询(Bool Query) 布尔查询是一种联合查询,可以对多个查询条件进行组合,布尔查询有四个子查询: 有时我们在查询es时,希望能够一次返回符合多个查询条件的结果,如

    2024年02月11日
    浏览(95)
  • ElasticSearch系列 - SpringBoot整合ES:查询条件 query 和过滤条件 filter 的区别

    01. Elasticsearch 查询条件和过滤条件的区别? Elasticsearch中的查询条件和过滤条件都是用于搜索和过滤文档的条件,但它们之间有一些区别。 查询条件是用于计算文档相关度得分的条件,它会将所有符合条件的文档按照相关度得分从高到低排序,并返回前N个文档。查询条件可以

    2024年02月14日
    浏览(61)
  • Mysql 数据库DQL 数据查询语言 SELECT 基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询——包含DQL所有查询语句。吐血分享。

    DQL:数据查询语言; 用来对表内的数据进行查找 。Database Query Language SQL语句分为:基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询。  可以发现name字段就只剩下一个张三了;   条件: 条件查询—比较运算符 比较运算符 功能 大于 = 大于等于 小于 = 小于等

    2024年01月19日
    浏览(56)
  • ES7 and or 关联条件查询JAVA

    @ES7 and or 关联条件查询JAVA 实现条件( platform=‘xxx’ and (home_path=‘xxx’ or nick_name=‘xxx’ )) kibana

    2024年02月08日
    浏览(53)
  • 【Elasticsearch】ES查询出满足以下其中任意一个条件的订单

    需求:最近测试经理给我这边提出一个需求,大致可以描述为查询出\\\" 购买的商品名称中包含’测试’ “、” 订单的收货地址包含’B360’ \\\"、“收货人手机号为测试人员的手机号”; 一、实现方案 当时评估了两种方案: ①、直接从数据库中查询; ②、从ES中查询; 方案①

    2024年02月16日
    浏览(41)
  • sql语句转为es查询条件(elasticsearch-sql使用)

    github源码地址: https://gitee.com/weiyxiong_admin/elasticsearch-sql/blob/master/src/test/java/org/nlpcn/es4sql/ExplainTest.java 1、添加pom.xml依赖 2、scala 将sql转为es查询json语句 3、测试 4、查询返回结果展示(即步骤三esJSON结果打印) 5、打开postman

    2024年02月13日
    浏览(54)
  • es查询简单场景问题小记

    需求背景:将订单表数据同步至es,实现根据订单名称、产品名称、客户姓名、客户手机号、备注、供应商姓名进行模糊查询 ps:整合springboot+RestHighLevelClient 关于操作es数据的工具类,网上一抓一大把,我也是随便找了文章,修修改改直接用的 这篇文章主要是想记录一下在查

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包