Elasticsearch6.X 去重详解

robinent
发布于 2022-4-29 11:39
浏览
0收藏

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)统计去重数目。
Elasticsearch6.X 去重详解-鸿蒙开发者社区

2)返回去重内容
方式一:top_hits聚合

Elasticsearch6.X 去重详解-鸿蒙开发者社区

方式二:折叠

Elasticsearch6.X 去重详解-鸿蒙开发者社区

方式二较方式一:
1)简化;
2)性能比aggs的实现要好很多。
更多DSL详见:http://t.cn/RmafXMJ

 

5、注意事项&小结


 •  折叠功能ES5.3版本之后才发布的。
 •  针对字符串类型,聚合&折叠只能针对keyword类型有效;
 •  只要思想不滑坡,方案总比问题多!

分类
收藏
回复
举报
回复
    相关推荐