SpringBoot集成Elasticsearch7.x(3)|(aggregations之指标聚合查询)

这篇具有很好参考价值的文章主要介绍了SpringBoot集成Elasticsearch7.x(3)|(aggregations之指标聚合查询)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot集成Elasticsearch7.x(3)|(aggregations之指标聚合查询)


章节
第一章链接: SpringBoot集成Elasticsearch7.x(1)|(增删改查功能实现)
第二章链接: SpringBoot集成Elasticsearch7.x(2)|(复杂查询)
第三章链接: SpringBoot集成Elasticsearch7.x(3)|(aggregations之指标聚合查询)
第四章链接: SpringBoot集成Elasticsearch7.x(4)|(aggregations之分桶聚合查询)
第五章链接: SpringBoot集成Elasticsearch7.x(5)|(term、match、match_phrase区别)
第六章链接: SpringBoot集成Elasticsearch8.x(6)|(新版本Java API Client使用)
第七章链接: SpringBoot集成Elasticsearch8.x(7)|(新版本Java API Client使用完整示例)

前言

本章节主要介绍SpringBoot项目集成ElasticSearch的一些相关知识,主要介绍的是基于Java High Level REST Client方式实现ElasticSearch分组聚合(aggregations)查询操作以及对应kibana控制台JSON格式访问对照。

一、ElasticSearch中Aggs是什么?

es的aggs可以分为 指标聚合(metrice)、分桶聚合(bucket)、 管道聚合(pipeline),分通聚合相当于sql的group by 能按照某一个或多个条件,对数据进行分桶(分组),默认返回数据的count(计数)条数,但实际上,可以理解为数据被分桶了,方便后面的聚合或者统计操作。指标聚合就是对分桶,或者未分桶的数据进行计算,例如avg求平均值,MAX最大值,min最小值,value count 计数 cardinality 基数 去重 starts 统计聚合等。管道聚合基于聚合结果的查询,分桶有可能是多层的,也有可能和指标是仙桃的,管道聚合可以根据路径(分桶和指标聚合时候的命名路径)对数据进行有针对性的操作,例如排序。

二、指标聚合查询

1.求和(sum)

查询所有城市景点票价总和

GET /architecture_index/_search 
{
  "size": 0, 
  "aggs": {
    "sum_price": {
      "sum": {
        "field": "price"
      }
    }
  }
}

实现代码如下

      /**
     * 聚合查询所有景点门票和
     * @throws IOException
     */
    @Test
    public void searchSum() throws IOException {
        //定义请求对象
        SearchRequest request = new SearchRequest("architecture_index");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

        //制定检索条件
        sourceBuilder.query(QueryBuilders.matchAllQuery())
                .aggregation(AggregationBuilders.sum("sum_price").field("price"));
        //组装
        request.source(sourceBuilder);
        //执行
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);

        //打印数据
        Aggregations aggregations = response.getAggregations();
        System.out.println(JSON.toJSONString(aggregations.getAsMap().get("sum_price")));
    }

2.求总数(count)

查询所有城市景点票价总和

GET /architecture_index/_search 
{
  "size": 0, 
  "aggs": {
    "count_name": {
      "value_count": {
        "field": "name.keyword"
      }
    }
  }
}

实现代码如下

      /**
     * 聚合查询所有景点总数
     * @throws IOException
     */
    @Test
    public void searchCount() throws IOException {
        //定义请求对象
        SearchRequest request = new SearchRequest("architecture_index");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

        //制定检索条件
        sourceBuilder.query(QueryBuilders.matchAllQuery())
                .aggregation(AggregationBuilders.count("count_name").field("name.keyword"));
        //组装
        request.source(sourceBuilder);
        //执行
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);

        //打印数据
        Aggregations aggregations = response.getAggregations();
        System.out.println(JSON.toJSONString(aggregations.getAsMap().get("count_name")));
    }

3.stats聚合

针对数字类型的查询,一次性查询出最低、最高、总和、总数量、平均值等

GET /architecture_index/_search 
{
  "size": 0, 
  "aggs": {
    "status_price": {
      "stats": {
        "field": "price"
      }
    }
  }
}

实现代码如下

      /**
     * 查询门票价格 最大值,最小值,平均值等
     * @throws IOException
     */
    @Test
    public void searchStats() throws IOException {
        //定义请求对象
        SearchRequest request = new SearchRequest("architecture_index");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

        //制定检索条件
        sourceBuilder.query(QueryBuilders.matchAllQuery())
                .aggregation(AggregationBuilders.stats("status_price").field("price"));
        //组装
        request.source(sourceBuilder);
        //执行
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);

        //打印数据
        Aggregations aggregations = response.getAggregations();
        System.out.println(JSON.toJSONString(aggregations.getAsMap().get("status_price")));
    }

3.stats聚合

只统计总数、平均值

  GET /architecture_index/_search 
  {
    "size": 0, 
    "aggs": {
      "count_name": {
        "value_count": {
          "field": "name.keyword"
        }
      },
      "avg_price": {
        "avg": {
          "field": "price"
        }
      }
    }
  }

实现代码如下

    /**
     * 求和 以及求平均值
     * @throws IOException
     */
    @Test
    public void search2() throws IOException {
        //定义请求对象
        SearchRequest request = new SearchRequest("architecture_index");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

        //制定检索条件
        sourceBuilder.query(QueryBuilders.matchAllQuery())
                .aggregation(AggregationBuilders.count("count_name").field("name.keyword"))
                .aggregation(AggregationBuilders.avg("avg_price").field("price"));
        //组装
        request.source(sourceBuilder);
        //执行
        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);

        //打印数据
        Aggregations aggregations = response.getAggregations();
        System.out.println(JSON.toJSONString(aggregations.getAsMap().get("count_name")));
        System.out.println(JSON.toJSONString(aggregations.getAsMap().get("avg_price")));
    }

总结

以上就是SpringBoot集成Elasticsearch数据库内容,在验证过程中遇到很多问题,如果大家在使用过程中遇到问题欢迎留言。文章来源地址https://www.toymoban.com/news/detail-452002.html

到了这里,关于SpringBoot集成Elasticsearch7.x(3)|(aggregations之指标聚合查询)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring boot 2.3.12集成ElasticSearch7.6.2并进行CRUD

    本篇博客主要讲解Spring boot 2.3.12集成ElasticSearch7.6.2并进行CRUD操作。其它版本的spring boot集成ElasticSearch类似,只需要具体各自的版本是否匹配。通过本篇博客能够成功集成ElasticSearch并进行CRUD操作,适合刚接触ElasticSearch需要进行简单CRUD操作的读者。 在集成ElasticSearch之前需要明

    2023年04月08日
    浏览(51)
  • SpringBoot3 整合 ElasticSearch7 示例

    做仿牛客项目需要使用 es 做搜索,但是老师示例的是 SpringBoot2 + es6 去做的,然而我用的是 Spring3 + es7.17.10,于是踩了很多的坑。 在 es7 中,配置文件和查询所需的实现类都做了很大的改动,我以能成功运行的代码为例,大概说一下怎么配置和使用。 首先 yml 配置文件发生了变

    2024年02月07日
    浏览(52)
  • 【SpringBoot整合ElasticSearch7.x及实战】

    此笔记内容为狂神说SpringBoot整合ElasticSearch部分 目录 一、SpringBoot整合 1、创建工程 2、导入依赖 导入elasticsearch依赖 提前导入fastjson、lombok 3、创建并编写配置类 4、创建并编写实体类 5、测试 索引的操作 文档的操作 二、ElasticSearch实战 防京东商城搜索(高亮) 1、工程创建(

    2024年02月08日
    浏览(59)
  • Java + SpringBoot 操作 ElasticSearch7.x.x工具类RestHighLevelClientUtils

    ElasticSearch创建索引,删除索引,判断 index 是否存在,根据 id 删除指定索引中的文档, 根据 id 更新指定索引中的文档,根据 id 更新指定索引中的文档,根据某字段的 k-v 更新索引中的文档, 添加文档 手动指定id,简单模糊匹配 默认分页为 0,10, term 查询 精准匹配,term 查询

    2024年02月13日
    浏览(49)
  • 【SpringBoot】SpringBoot集成ElasticSearch

    这段代码是一个基本的 Elasticsearch Java 客户端的配置类,用于创建一个 RestHighLevelClient 实例。 其中 RestHighLevelClient 是 Elasticsearch Java 客户端的高级别别名,是基于 LowLevelClient 之上的封装,提供了一些更加方便的方法和功能。 在这段代码中,使用了 @Value 注解来注入三个配置项

    2024年02月04日
    浏览(47)
  • SpringBoot集成 ElasticSearch

    对于ElasticSearch比较陌生的小伙伴可以先看看ElasticSearch的概述ElasticSearch安装、启动、操作及概念简介 好的开始啦~ 1.1、导入依赖 新版本配置方式(推荐使用) 新的配置方式使用的是 High Level REST Client 的方式来替代之前的 Transport Client 方式,使用的是 HTTP 请求,和 Kibana 一样使

    2023年04月20日
    浏览(39)
  • ElasticSearch集成SpringBoot实践

    Search API Search Request,用于搜索文档,聚合,相关的任何操作,还提供了高亮显示结果文档的方法 使用SearchSourceBuilder,大多数控制搜索行为的选项都可以在SearchSourceBuilder上设置 构建查询,搜索查询是使用QueryBuilder对象创建的,ES的查询DSL支持的每一种搜索查询类型都有一个

    2024年02月03日
    浏览(40)
  • SpringBoot 集成 Elasticsearch

    版本说明详见 Elasticsearch 下载 kibana下载 ik分词器下载 2.1 解压,在elasticsearch-7.8.0plugins 路径下新建ik目录 2.2 将ik分词器解压放入ik目录 2.3 扩展词汇测试示例 2.3.1 ik/config 目录下新建custom.dic文件 2.3.2 编辑custom.dic文件,加入新词汇 注意:custom.dic文件内容的格式的编码为UTF-8格

    2024年02月14日
    浏览(40)
  • SpringBoot集成ElasticSearch

    实现搜索并高亮 在线体验:http://www.sixkey-world.top

    2024年03月17日
    浏览(47)
  • 六、SpringBoot集成elasticsearch

    目录 官网API介绍 1、新建maven项目 2、检查elasticsearch依赖的版本 3、配置RestHighLevelClient对象 4、使用springboot-test测试API的使用 Java API Client https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/index.html Java REST Client(rest-high-level-client): https://www.elastic.co/guide/en/elasticsearc

    2024年02月09日
    浏览(66)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包