es 聚合分页

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

1,hotkey 索引结构

{
"properties": {
"id": {
"type": "keyword"
},
"searchInput": {
"type": "keyword"
},
"createDate": {
"type": "keyword"
},
"searchType": {
"type": "keyword"
}
}
}

2 TopHitsAggregationBuilder

//设置要查询的索引
SearchRequest request = new SearchRequest().indices("hotkey");
//构建搜索
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//添加搜索长度
sourceBuilder.size(0);
//添加搜索条件
sourceBuilder.query(new BoolQueryBuilder().must(QueryBuilders.termQuery("searchType", searchDto.getSourceType())));
//设置要聚合的字段以及条数
//设置该次聚合的名称 terms(args1)

// 需要返回字段的集合
String[] param = {"searchInput"};

// 对需要返回的数据包括哪些,不包括哪些,重复的只返回1条
TopHitsAggregationBuilder top1 = AggregationBuilders.topHits("top").fetchSource(param, Strings.EMPTY_ARRAY).size(1);
// 通过searchInput聚合并且聚合后返回10条数据,注意这里的size(这里代表聚合查询出多少条数据,注意这里的size要比最下面分页的size要大,因为是对聚合后的数据分页,如果不写的话默认是10)
TermsAggregationBuilder agg1 = AggregationBuilders.terms("searchInput").field("searchInput").subAggregation(top1).size(30);
//以及要聚合的字段field(args1 + ".keyword") 添加keyword是对字段进行不分词查询。

agg1.subAggregation(new BucketSortPipelineAggregationBuilder("bucket_field",null).
from((searchDto.getPageIndex() - 1) * searchDto.getPageSize()).size(searchDto.getPageSize()));
sourceBuilder.aggregation(agg1);

request.source(sourceBuilder);
SearchResponse response = null;
try {
response = elasticsearchTemplate.search(request);
} catch (Exception e) {
log.error("==========search hotkey error====", e);
}
Aggregations aggregations = response.getAggregations();

List<String> list = new ArrayList<>();
Terms terms1 = aggregations.get("searchInput");

3,kibana 查询

{"size":0,"query":{"bool":{"must":[{"term":{"searchType":{"value":"app","boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}},"aggregations":{"searchInput":{"terms":{"field":"searchInput","size":30,"min_doc_count":1,"shard_min_doc_count":0,"show_term_doc_count_error":false,"order":[{"_count":"desc"},{"_key":"asc"}]},"aggregations":{"top":{"top_hits":{"from":0,"size":1,"version":false,"seq_no_primary_term":false,"explain":false,"_source":{"includes":["searchInput"],"excludes":[]}}},"bucket_field":{"bucket_sort":{"sort":[],"from":0,"size":10,"gap_policy":"SKIP"}}}}}}

4,返回数据文章来源地址https://www.toymoban.com/news/detail-739120.html

{"took":5,"timed_out":false,"_shards":{"total":3,"successful":3,"skipped":0,"failed":0},"hits":{"total":{"value":16,"relation":"eq"},"max_score":null,"hits":[]},"aggregations":{"searchInput":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[{"key":"ABCDE","doc_count":2,"top":{"hits":{"total":{"value":2,"relation":"eq"},"max_score":5.13318,"hits":[{"_index":"hotkey","_type":"_doc","_id":"d0b63727fc0743318534a4b190f68b53","_score":5.13318,"_source":{"searchInput":"ABCDE"}}]}}},{"key":"东临碣石","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.5587773,"hits":[{"_index":"hotkey","_type":"_doc","_id":"2ad888de2d164a16b314b15904aaa6b7","_score":4.5587773,"_source":{"searchInput":"东临碣石"}}]}}},{"key":"以观沧海","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.80253,"hits":[{"_index":"hotkey","_type":"_doc","_id":"74a8ed19c75c4cdc89cd6827a6504fda","_score":4.80253,"_source":{"searchInput":"以观沧海"}}]}}},{"key":"何时在人间","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.5587773,"hits":[{"_index":"hotkey","_type":"_doc","_id":"438b4fdde48d40cda6e3563d9bcc62bd","_score":4.5587773,"_source":{"searchInput":"何时在人间"}}]}}},{"key":"创新医药实际","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":5.13318,"hits":[{"_index":"hotkey","_type":"_doc","_id":"cb51799e599f46c4b2ea649fe6b11f20","_score":5.13318,"_source":{"searchInput":"创新医药实际"}}]}}},{"key":"天涯共此时","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.5587773,"hits":[{"_index":"hotkey","_type":"_doc","_id":"facf5752fc284c0a9a58d157cc28c091","_score":4.5587773,"_source":{"searchInput":"天涯共此时"}}]}}},{"key":"山岛竦是","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":5.13318,"hits":[{"_index":"hotkey","_type":"_doc","_id":"c14cc6f367934d43b9b0fcb7095b085c","_score":5.13318,"_source":{"searchInput":"山岛竦是"}}]}}},{"key":"我欲乘风归去","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.80253,"hits":[{"_index":"hotkey","_type":"_doc","_id":"242358ccf1684f178d143e2cf64ad8f0","_score":4.80253,"_source":{"searchInput":"我欲乘风归去"}}]}}},{"key":"有空请楼宇与","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.5587773,"hits":[{"_index":"hotkey","_type":"_doc","_id":"1f1ce4ce78814e5e99674ccfe214c87a","_score":4.5587773,"_source":{"searchInput":"有空请楼宇与"}}]}}},{"key":"水和丹丹","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.5587773,"hits":[{"_index":"hotkey","_type":"_doc","_id":"5262a7dd87b14ec280fc684237dfdcad","_score":4.5587773,"_source":{"searchInput":"水和丹丹"}}]}}},{"key":"海上升明月","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.80253,"hits":[{"_index":"hotkey","_type":"_doc","_id":"0b93f86d8223446db3f98db7c9a8efcb","_score":4.80253,"_source":{"searchInput":"海上升明月"}}]}}},{"key":"由于竟是","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":5.13318,"hits":[{"_index":"hotkey","_type":"_doc","_id":"60bc393b0fae4a84b72ff311aab5e3dd","_score":5.13318,"_source":{"searchInput":"由于竟是"}}]}}},{"key":"神龟虽寿","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.80253,"hits":[{"_index":"hotkey","_type":"_doc","_id":"4d389e8ec7da45c897bc961030990e66","_score":4.80253,"_source":{"searchInput":"神龟虽寿"}}]}}},{"key":"起舞弄清影","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.80253,"hits":[{"_index":"hotkey","_type":"_doc","_id":"b7535c2102104a94a1e5ee457e955b95","_score":4.80253,"_source":{"searchInput":"起舞弄清影"}}]}}},{"key":"高处不胜寒","doc_count":1,"top":{"hits":{"total":{"value":1,"relation":"eq"},"max_score":4.5587773,"hits":[{"_index":"hotkey","_type":"_doc","_id":"a77bd175cfc64d1b8af7d6597c57530b","_score":4.5587773,"_source":{"searchInput":"高处不胜寒"}}]}}}]}}}

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

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

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

相关文章

  • es 聚合分页

    1, hotkey 索引结构 { \\\"properties\\\": { \\\"id\\\": { \\\"type\\\": \\\"keyword\\\" }, \\\"searchInput\\\": { \\\"type\\\": \\\"keyword\\\" }, \\\"createDate\\\": { \\\"type\\\": \\\"keyword\\\" }, \\\"searchType\\\": { \\\"type\\\": \\\"keyword\\\" } } } 2 TopHitsAggregationBuilder //设置要查询的索引 SearchRequest request = new SearchRequest().indices(\\\"hotkey\\\"); //构建搜索 SearchSourceBuilder sourceBuilder = new

    2024年02月06日
    浏览(41)
  • es多字段聚合,聚合后分页,聚合后having等操作

    es聚合的应用场景是很多,不过,有时候,还会有多个字段聚合,聚合后分页,聚合后having的需求 Elasticsearch 聚合后是不支持分页的 性能角度——聚合分页会在大量的记录中产生性能问题。 正确性角度——聚合的文档计数不准确. 但是,公司的一些要求,要进行分页,大致有两种思路 聚

    2023年04月09日
    浏览(37)
  • es使用java来查询文档(基于es7.8)

    注意,索引的字段mapping是如下类型,如果index是FALSE的话,会导致条件查询失败: 先引入pom依赖: 创建User类: 然后在名为user的索引里,插入多条数据,在main方法里进行测试: 然后进行测试:

    2024年02月11日
    浏览(48)
  • ES 使用 Bucket Sort 对聚合结果分页

    在 Elasticsearch 中,Bucket Sort 是一种聚合操作,用于对桶(bucket)进行排序。它可以根据指定的字段对聚合结果中的桶进行排序,以便按照特定的顺序呈现数据。 Bucket Sort 和 Top Hits 有相似之处,他们之间的区别是:Bucket 是对聚合分桶的排序和分页,而 Top Hits 是对分桶聚合中每

    2024年02月07日
    浏览(50)
  • Elasticsearch - 聚合获取原始数据并分页&排序&模糊查询

    ES版本: 7.6. 需要按照主机ID 进行告警时间的汇总,并且还得把主机相关的信息展示出来。 注: 所有的数据都存在索引中, 通过一个DSL查询展示 实际上就是将terms聚合的结果以列表形式分页展示。 bucket_sort中 from不是pageNum,如想实现pageNum效果,from=pageNum*size即可; terms聚合

    2024年02月05日
    浏览(47)
  • 【ElasticSearch】使用 Java 客户端 RestClient 实现对文档的查询操作,以及对搜索结果的排序、分页、高亮处理

    在 Elasticsearch 中,通过 RestAPI 进行 DSL 查询语句的构建通常是通过 HighLevelRestClient 中的 resource() 方法来实现的。该方法包含了查询、排序、分页、高亮等所有功能,为构建复杂的查询提供了便捷的接口。 RestAPI 中构建查询条件的核心部分是由一个名为 QueryBuilders 的工具类提供

    2024年01月16日
    浏览(63)
  • PostgreSQL数据库以任意时间间隔聚合查询group by

    我们做的是智慧交通信控平台,需要将实时采集到的交通大数据(信号机灯态、卡口过车、雷达数据等)全部入库,按照时间顺序存储 然后根据原始数据,再计算出一些交通评价指标,存储到数据库,供后续聚合查询和分析统计 前端设备(信号机、雷达、卡口等)上报原始

    2024年02月02日
    浏览(59)
  • 【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

    在上次学习的内容中,我们讲解了: 使用DDL语句来操作数据库以及表结构(数据库设计) 使用DML语句来完成数据库中数据的增、删、改操作(数据库操作) 我们今天还是继续学习数据库操作方面的内容:查询(DQL语句)。 查询操作我们分为两部分学习: DQL语句-单表操作

    2024年02月02日
    浏览(85)
  • ES 聚合分组查询 语法

    ES 聚合分组查询的语法如下: 其中 index 是索引名称, size 设置为 0 意味着只返回聚合结果而不返回文档。 aggs 字段是聚合查询的核心部分,这里以 group_by_field 为例进行分组查询,其中 terms 指定了分组的字段名称。 这样的查询会返回按照 field_name 字段进行分组后每个分组的

    2024年02月11日
    浏览(39)
  • ES-聚合查询

    1. 概念 聚合(aggs)不同于普通查询,是目前学到的第二种大的查询分类,第一种即“query”,因此在代码中的第一层嵌套由“query”变为了“aggs”。用于进行聚合的字段必须是exact value,分词字段不可进行聚合,对于text字段如果需要使用聚合,需要开启fielddata,但是通常不建

    2023年04月25日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包