Elasticsearch6.X 去重详解

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 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_hots聚合方式。

方式二:使用collapse折叠功能。


4、DSL源码

1)统计去重数目。

GET books/_search

{

"size":0,

"aggs" : {

"books_count" : {

"cardinality" : {

"field" : "title.keyword"

}

}

}

}

1

2

3

4

5

6

7

8

9

10

11

2)返回去重内容

方式一:top_hits聚合


GET books/_search

{

"query": {

"match_all": {}

},

"aggs": {

"type": {

"terms": {

"field": "title.keyword",

"size": 10

},

"aggs": {

"title_top": {

"top_hits": {

"_source": {

"includes": ["title"]

},

"sort": [

{

"title.keyword": {

"order": "desc"

}

}

],

"size":1

}

}

}

}

},

"size": 0

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

方式二:折叠


GET books/_search

{

"query": {

"match_all":{}

},

"collapse": {

"field": "title.keyword"

}

}

1

2

3

4

5

6

7

8

9

方式二较方式一:

1)简化;

2)性能比aggs的实现要好很多。

更多DSL详见:http://t.cn/RmafXMJ


5、注意事项&小结

1、折叠功能ES5.3版本之后才发布的。

2、聚合&折叠只能针对keyword类型有效;

3、只要思想不滑坡,方案总比问题多!


参考:

https://elasticsearch.cn/article/132

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
数据采集 数据挖掘 索引
Elasticsearch “指纹”去重机制,你实践中用到了吗?
Elasticsearch “指纹”去重机制,你实践中用到了吗?
36 7
|
算法 数据挖掘
白话Elasticsearch46-深入聚合数据分析之Cardinality Aggs-cardinality去重算法以及每月销售品牌数量统计
白话Elasticsearch46-深入聚合数据分析之Cardinality Aggs-cardinality去重算法以及每月销售品牌数量统计
113 0
|
SQL 关系型数据库 MySQL
elasticsearch中如何实现dinstinct去重功能
elasticsearch中如何实现dinstinct去重功能
960 0
elasticsearch中如何实现dinstinct去重功能
|
存储 数据采集 编解码
fingerprint filter 插件——Elasticsearch 去重必备利器
1、实战问题 问题1:es 中 scroll 游标不能与 collapse 共用,有什么办法可以实现 collapse 的效果? 问题2:采集互联网数据有重复数据写入 Elasticsearch,如何去重后放到另外索引?
705 0
fingerprint filter 插件——Elasticsearch 去重必备利器
|
1月前
|
Java Maven 开发工具
【ElasticSearch 】IK 分词器安装
【ElasticSearch 】IK 分词器安装
47 1
|
17天前
Elasticsearch安装配置文件
Elasticsearch安装配置文件
15 0
|
1月前
|
存储 数据可视化 数据挖掘
【ElasticSearch】ElasticSearch安装
【ElasticSearch】ElasticSearch安装
38 2
|
2天前
|
自然语言处理 搜索推荐
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
在Elasticsearch 7.9.2中安装IK分词器并进行自定义词典配置
7 1
|
17天前
|
安全
【Elasticsearch6】安装笔记
【Elasticsearch6】安装笔记
15 2
|
17天前
|
网络协议 Java
elasticsearch7.1 安装启动报错
elasticsearch7.1 安装启动报错
16 1