ES之多条件、范围查询

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

ES之多条件、范围查询

一、多条件查询
1.条件“且”,即查询"title"为"test6",且"num"为5的数据
【GET】请求:http://127.0.0.1:9200/test-index-1/_search,参数如下

{
    "query":{
        "bool":{
            "must":[
                {
                    "match":{
                        "title": "test6"
                    }
                },
                {
                    "match":{
                        "num": 5
                    }
                }
            ]
        }
    }
}

结果如下

{
    "took": 16,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 2.7917595,
        "hits": [
            {
                "_index": "test-index-1",
                "_type": "_doc",
                "_id": "s_Hyw30BJJ5e1YHwWWcU",
                "_score": 2.7917595,
                "_source": {
                    "title": "test6",
                    "num": 5,
                    "date": "20211213"
                }
            }
        ]
    }
}

2.条件“或”,即查询"title"为"test6",或"title"为"test8"的数据
【GET】请求:http://127.0.0.1:9200/test-index-1/_search,参数如下

{
    "query":{
        "bool":{
            "should":[
                {
                    "match":{
                        "title": "test6"
                    }
                },
                {
                    "match":{
                        "title": "test8"
                    }
                }
            ]
        }
    }
}

结果如下

{
    "took": 6,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 1.7917595,
        "hits": [
            {
                "_index": "test-index-1",
                "_type": "_doc",
                "_id": "s_Hyw30BJJ5e1YHwWWcU",
                "_score": 1.7917595,
                "_source": {
                    "title": "test6",
                    "num": 5,
                    "date": "20211213"
                }
            },
            {
                "_index": "test-index-1",
                "_type": "_doc",
                "_id": "tfHyw30BJJ5e1YHwbmfT",
                "_score": 1.7917595,
                "_source": {
                    "title": "test8",
                    "num": 5,
                    "date": "20211213"
                }
            }
        ]
    }
}

二、范围查询
查询“num”小于4的数据
gt:大于
gte:大于等于
lt:小于
lte:小于等于
【GET】请求:http://127.0.0.1:9200/test-index-1/_search,参数如下

{
    "query":{
        "bool":{
            "filter":{
                "range":{
                    "num":{
                        "lt":4
                    }
                }
            }
        }
    }
}

结果如下

{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": 0.0,
        "hits": [
            {
                "_index": "test-index-1",
                "_type": "_doc",
                "_id": "rvHxw30BJJ5e1YHw6meH",
                "_score": 0.0,
                "_source": {
                    "title": "test1",
                    "num": 1,
                    "date": "20211213"
                }
            },
            {
                "_index": "test-index-1",
                "_type": "_doc",
                "_id": "r_Hxw30BJJ5e1YHw_2fX",
                "_score": 0.0,
                "_source": {
                    "title": "test2",
                    "num": 2,
                    "date": "20211213"
                }
            },
            {
                "_index": "test-index-1",
                "_type": "_doc",
                "_id": "sPHyw30BJJ5e1YHwEGfB",
                "_score": 0.0,
                "_source": {
                    "title": "test3",
                    "num": 3,
                    "date": "20211213"
                }
            }
        ]
    }
}

注意:should与must或filter在同一层级直接使用时,should会失效,需要加入参数"minimum_should_match":1,或者should当做子层级
共用时参考 https://blog.csdn.net/andy_5826_liu/article/details/103161654文章来源地址https://www.toymoban.com/news/detail-504157.html

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

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

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

相关文章

  • ElasticSearch序列 - SpringBoot整合ES:范围查询 range

    01. ElasticSearch range查询是什么? Elasticsearch 中的 range 查询可以用于查询某个字段在一定范围内的文档。 range 查询可同时提供包含和不包含这两种范围表达式,可供组合的选项如下: gt : 大于(greater than) lt : 小于(less than) gte : = 大于或等于(greater than or equal to) lte : = 小于

    2024年02月09日
    浏览(32)
  • ES多条件查询

    场景:想要查询出设备id 为 3 的所有设备上报信息,并且上报信息的开始时间或结束时间只要有一个满足 在 某个时间段里即可。 在 Elasticsearch 中,您可以使用布尔查询来实现同时满足条件1并且满足条件2或条件3中的一个的查询。具体来说,您可以使用“must”子句来指定满足

    2024年02月09日
    浏览(26)
  • ES Elasticsearch日期范围查询和查不出的坑

    如果字段为字符串类型,需要在字段后面加 .keyword 不加会出现查不出的问题。 查询全部,有大于2022-01-01的数据 按日期范围查询却没有查出来 字段后面加“.keyword”即可,分词问题

    2024年02月11日
    浏览(33)
  • ES实现三表关联查询+条件过滤

            很多时候mysql的表之间是一对多的关系,比如库信息表(元数据信息),表信息表(元数据信息),字段信息表(元数据信息)。一个库可以包含多个表,一个表可以包含多个字段。他们的关系:库—(1:n)-表—(1:n)-字段。         ElasticsSearch(以下简称ES)处

    2024年02月05日
    浏览(33)
  • ES:多值(in)查询和条件批量删除

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

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

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

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

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

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

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

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

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

    2024年02月14日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包