前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch6.X 去重详解

Elasticsearch6.X 去重详解

作者头像
铭毅天下
发布2018-04-24 13:28:01
2.7K0
发布2018-04-24 13:28:01
举报
文章被收录于专栏:铭毅天下铭毅天下

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 铭毅天下Elasticsearch 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、题记
  • 2、需求
  • 3、分析
  • 4、DSL源码
    • 1)统计去重数目。
      • 2)返回去重内容
      • 5、注意事项&小结
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档