Elasticsearch6.X 去重详解
2020-12-09 21:16
701 查看
1、题记
Elasticsearch有没有类似mysql的distinct的去重功能呢?
1)如何去重计数?
类似mysql: select distinct(count(1)) from my_table;
2)如何获取去重结果。
类似mysql:SELECT DISTINCT name,age FROM users;
2、需求
1)对ES的检索结果进行去重统计计数。
2)对ES的检索结果去重后显示。
3、分析
1)统计计数需要借助ES聚合功能结合cardinality实现。
2)去重显示结果有两种方式:
方式一:使用字段聚合+top_hits聚合方式。
方式二:使用collapse折叠功能。
4、DSL源码
1)统计去重数目。
1GET books/_search 2{ 3"size":0, 4"aggs" : { 5"books_count" : { 6"cardinality" : { 7"field" : "title.keyword" 8} 9} 10} 11}
2)返回去重内容
方式一:top_hits聚合
1GET books/_search 2{ 3"query": { 4"match_all": {} 5}, 6"aggs": { 7"type": { 8"terms": { 9"field": "title.keyword", 10"size": 10 11}, 12"aggs": { 13"title_top": { 14"top_hits": { 15"_source": { 16"includes": ["title"] 17}, 18"sort": [ 19{ 20"title.keyword": { 21"order": "desc" 22} 23} 24], 25"size":1 26} 27} 28} 29} 30}, 31"size": 0 32}
方式二:折叠
1GET books/_search 2{ 3"query": { 4"match_all":{} 5}, 6"collapse": { 7"field": "title.keyword" 8} 9}
方式二较方式一:
1)简化;
2)性能比aggs的实现要好很多。
更多DSL详见:http://t.cn/RmafXMJ
5、注意事项&小结
- 折叠功能ES5.3版本之后才发布的。
- 针对字符串类型,聚合&折叠只能针对keyword类型有效;
- 只要思想不滑坡,方案总比问题多!
参考:
https://elasticsearch.cn/article/132
相关文章推荐
- ElasticSearch配置详解
- elasticsearch__6__es部分名词说明与配置文件详解
- elasticsearch配置文件 详解
- elasticsearch 配置详解
- Elasticsearch Java虚拟机配置详解(转)
- elasticsearch-.yml(中文配置详解)
- elasticsearch-jdbc实现MySQL同步到ElasticSearch深入详解
- ElasticSearch学习(5)-配置文件详解
- ElasticSearch Java api 详解_V1.0
- ElasticSearch中分词器组件配置详解
- Elasticsearch写入原理深入详解
- elasticsearch 详解
- elasticsearch配置文件详解
- Elasticsearch java api 基本搜索部分详解
- centos7.2环境elasticsearch-5.0.1+kibana-5.0.1+zookeeper3.4.6+kafka_2.9.2-0.8.2.1部署详解
- Elasticsearch之sense插件安装之后的浏览详解
- ElasticSearch常用的基本查询语句详解
- 【Elasticsearch】打分策略详解与explain手把手计算
- Elasticsearch应用三:索引详解(分词器、文档管理、路由详解(集群))
- Elasticsearch 2.2.0 集群配置详解