Elasticsearch的高级查询

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

目录

一、条件查询

1、单条件

1)路由查询

 2)body体查询

2、多条件查询

1)and---must

 2)or---should

3)范围---filter

3、全文检索、完全匹配、高亮显示

 二、聚合查询

1、分组

2、求平均值


一、条件查询

1、单条件

1)路由查询

方法:get

url :http://localhost:9200/wenzhang/_search?q=name:蜡笔

介绍:q后面跟的是字段名,冒号后面是要搜索的关键字 

elasticsearch 条件查询,Elasticsearch,elasticsearch,大数据

 2)body体查询

方法:get

url:http://localhost:9200/wenzhang/_search

{"query":{"match":{"name":"蜡笔"}}}

elasticsearch 条件查询,Elasticsearch,elasticsearch,大数据

 全量查询

{"query":{"match_all":{}}}

分页查询

{"query":
    {
        "match_all":{

        } 
    },
    "from":0,
    "size":3
}

from:游标起始位 size:查询量

控制显示字段

{"query":
    {
        "match_all":{

        } 
    },
    "from":0,
    "size":3,
    "_source" : ["name"]
}

排序

{"query":
    {
        "match_all":{} 
    },
    "from":0,
    "size":3,
    "sort":{
        "age":{
            "order" : "desc"
        }
    }
}

2、多条件查询

方法:get

url:http://localhost:9200/wenzhang/_search

1)and---must

{
	"query":{
		"bool":{
            "must":[
                {
                    "match":{
                        "name":"蜡笔"
                    }
                },
                {
                    "match":{
                        "age":6
                    }
                }
            ]
		}
	}
}

elasticsearch 条件查询,Elasticsearch,elasticsearch,大数据

 2)or---should

{
	"query":{
		"bool":{
            "should":[
                {
                    "match":{
                        "name":"蜡笔"
                    }
                },
                {
                    "match":{
                        "name":"海绵宝宝"
                    }
                }
            ]
		}
	}
}

这样海绵宝宝和蜡笔小新都被查出来了

3)范围---filter

{
	"query":{
		"bool":{
            "must":[
                {
                    "match":{
                        "name":"蜡笔"
                    }
                }
            ],
            "filter" : {
                "range" : {
                    "age":{
                        "gt":5
                    }
                }
            }
		}
	}
}

这个时候搜索的就是大于5岁的蜡笔小新,如果把上面的must改成should,那会把8岁的海绵宝宝也搜出来,可见should也作用到了filter上。

3、全文检索、完全匹配、高亮显示

全文检索match,上面我们查询都是用的这个关键字,但是有个特点,name字段写"蜡笔"和"蜡小笔"都能匹配到数据,原因是es在底层做了拆词,把每个字做了倒排索引,当我们查询的时候会把每个字都拆开全文检索匹配,这样就返回了所有数据。

这不是我们想要的结果,我们就想要蜡笔小新怎么办。有办法,完全匹配。

完全匹配match_phrase,这样匹配到的都是以我们输入的name里的关键字做的匹配。

高亮显示:highlight,查询过程加入此关键字就可以把匹配到的值高亮显示。

{
	"query":{
		"bool":{
            "must":[
                {
                    "match_phrase":{
                        "name":"蜡笔"
                    }
                }
            ]
		}
	},
    "highlight":{
        "fields" : {
            "name":{}
        }
    }
}

elasticsearch 条件查询,Elasticsearch,elasticsearch,大数据

 二、聚合查询

方法:get

url:http://localhost:9200/wenzhang/_search

1、分组

{
    "aggs" : {
        "age_group" : {
            "terms" : {
                "field" : "age"
            }
        }
    },
    "size" : 0
}

elasticsearch 条件查询,Elasticsearch,elasticsearch,大数据

aggs:聚合操作

age_group:自定义聚合名称

terms:聚合的具体操作,terms代表分组

size:查询结果不显示原始数据

2、求平均值

{
    "aggs" : {
        "age_avg" : {
            "avg" : {
                "field" : "age"
            }
        }
    },
    "size" : 0
}

elasticsearch 条件查询,Elasticsearch,elasticsearch,大数据

avg:平均聚合操作文章来源地址https://www.toymoban.com/news/detail-635930.html

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

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

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

相关文章

  • elasticsearch 跨索引联合多条件查询

    Elasticsearch 是一个免费且开放的分布式搜索和分析引擎。适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组

    2023年04月09日
    浏览(39)
  • Java Elasticsearch多条件分组聚合查询

    需求         在项目开发中,需要从elasticsearch中查询日志数据,先统计每一天的日志调用量,然后在每一天的分组聚合基础上,再分组聚合统计成功和失败的日志调用量。 代码

    2024年02月08日
    浏览(54)
  • ElasticSearch学习简单使用(索引、文档、分页查询、多条件查询)

    APIfox接口在线文档 安装连接 下载链接(各个系统,也包括docker) 打开 我下载的时window版本,直接就是zip压缩包解压后直接使用 执行bin目录下的这个bat文件,就会自动打开终端运行了。 大部分使用http请求进行学习。 你需要一个接口工具,postman,APIfox,或者一些浏览器插件

    2024年02月03日
    浏览(42)
  • 初识ElasticSearch(5) -批量操作之bulk | 条件查询 | 其它查询

    本系列笔记结合HTTP请求(使用postman调用,源文件见GitHub)和ElasticsearchRestTemplate进行调用学习 ElasticsearchRestTemplate封装了RestHighLevelClient,有些场景还得用RestHighLevelClient来操作 版本说明:使用的SpringBoot-2.3.5,对应的ElasticSearch-7.6.2;所以还是可以用RestHighLevelClient ElasticSearch-7

    2023年04月08日
    浏览(70)
  • springboot整合elasticsearch8组合条件查询

    整合过程见上一篇文章 springboot整合elasticsearch8 1.es8多条件组合查询 2.使用scroll进行大数据量查询

    2024年02月16日
    浏览(52)
  • elasticsearch相同查询条件每次返回结果不一样

    现象: 今天web开发人员反馈,在腾讯云对某一个客户的某表数据执行相同的查询结果,有时候不返回数据; 我们是按周区分索引的,数据量不大,去掉时间条件执行查询发现会交替出现  命中21980和命中的8999结果; 解决: 1.首先简单查询其他的表或者其他的集群有没有类似

    2024年01月23日
    浏览(55)
  • SpringBoot中进行elasticSearch查询,使用QueryBuilders构建各类条件查询

    BoolQueryBuilder对象使用must方法build,多个and使用多个must BoolQueryBuilder对象使用should方法build,多个or使用多个should使用 本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。 首发链接:https://www.cnblogs.com/lingyejun/p/17557467.html

    2024年02月16日
    浏览(37)
  • ElasticSearch第十四讲 ES有条件复杂查询

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

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

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

    2023年04月08日
    浏览(72)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包