1.概述

转载:Elasticsearch6.X 去重详解

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"}}}
}

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
}

方式二:折叠

GET books/_search
{
"query": {
"match_all":{}
},
"collapse": {
"field": "title.keyword"
}
}

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

5、注意事项&小结
1、折叠功能ES5.3版本之后才发布的。
2、聚合&折叠只能针对keyword类型有效;
3、只要思想不滑坡,方案总比问题多!

【Elasticsearch】es 查询 去重相关推荐

  1. 【236期】ElasticSearch 进阶:一文全览各种 ES 查询在 Java 中的实现

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

  2. ElasticSearch进阶:一文全览各种ES查询在Java中的实现

    ElasticSearch多种查询操作 前言 1 词条查询 1.1 等值查询-term 1.2 多值查询-terms 1.3 范围查询-range 1.4 前缀查询-prefix 1.5 通配符查询- ...

  3. es查询语句拼接 java_JAVA使用ElasticSearch查询in和not in的实现方式

    JAVA使用ElasticSearch查询in和not in的实现方式 发布时间:2020-08-22 16:03:11 来源:脚本之家 阅读:119 作者:执笔记忆的空白 ElasticSearch ...

  4. ElasticSearch 6.3版本(ES)查询人名关键字不拆词查询

    ElasticSearch 6.3版本(ES)查询关键字不拆词查询:类似mysql 的 like 语句. mysql的sql语法类似如下,采用大量like和locate语法,进行模糊查询,导致查询一个 ...

  5. ES 查询示例 搜索 分组 去重 分页 排序

    es 查询示例 搜索 分组 去重 分页 排序 java 语句 @Autowiredprivate static RestHighLevelClient client;@PostConstructpub ...

  6. ElasticSearch(ES)中的分片查询方式

    原文地址:http://www.bubuko.com/infodetail-836737.html Es查询的时候默认是随机从一些分片中查询数据,可以通过配置让es从某些分片中查询数据 1:_loca ...

  7. 【Elasticsearch】ES查询不等于的实现方式比较 must_not NOT 不等于

    前言 在我们ES的日常使用中,需要根据业务去筛选不等于某一个数值或者字符串的查询,下面我将列出几种实现方式,并比较优缺点,给大家参考. 查询 must_not must_not和must.filter ...

  8. java使用ElasticSearch的scroll查询,高效的解决es查询数量的限制。

    java使用ElasticSearch的scroll查询,高效的解决es查询数量的限制. 一.为什么要使用ES的scroll (1)首先我们要明白es的查询机制:ES的搜索是分2个阶段进行的,即Que ...

  9. elasticsearch 条件去重_Elasticsearch学习之查询去重

    1. 实现查询去重.分页,例如:实现依据qid去重,createTime排序,命令行为: GET /nb_luban_answer/_search {"query": {" ...

最新文章

  1. LeetCode实战:二叉树的最近公共祖先
  2. 岭回归和lasso回归_正则化(2):与岭回归相似的 Lasso 回归
  3. 完美刷机显示云服务器,完美刷机显示云服务器
  4. 没有终结点在侦听可以接受消息的_【大卫聊股】2019.05.05 周末重要消息分析及下周一走势预判...
  5. python利用近似公式计算π_Excel函数公式大全之利用SUMSQ函数快速计算多个数据的平方和...
  6. django的contenttype表
  7. 队列入队和出队程序演示
  8. Windows Phone 8初学者开发—第6部分:设置应用程序的样式
  9. Oracle 常用符号CHR
  10. IOError: encoder jpeg not available
  11. 分表分页/跨库分页为什么这么难?
  12. nginx信号量(平滑重启/升级/重读日志)
  13. 视频会议、视频聊天、手机视频、跨平台视频如何开发之流程篇
  14. 【数据库/数据挖掘/内容检索】 2019年-中国计算机学会推荐国际学术会议和期刊目录(五)
  15. Vue动态加载并注册组件
  16. 西门子em235模块的功能_30天快速入门西门子PLC(第六天)
  17. linkboy带你点亮LED创意世界
  18. 《HarmonyOS开发 - 小凌派-RK2206开发笔记》第2章 源码编译与固件下载
  19. 灰色线性回归组合预测模型及R语言实现
  20. 把编程当小葵花妈妈课堂

热门文章

  1. 阿里云建站主机之虚拟主机、轻量或云服务器ECS
  2. 交强险实务修订,交强险日费率短期方案(草案)
  3. 再次登顶SPC-1,这家发展18年的存储厂商暗藏什么绝技?
  4. [oracle][史上最全] 详解别名 tnsnames.ora文件
  5. 图像识别AGV小车的技术原理、特点
  6. web应用,javaEE企业级应用,如何严格区分?
  7. VMware workstation虚拟机联网的方法
  8. 【夯实Kafka知识体系及基本功】分析一下生产者(Producer)实现原理分析「原理篇」
  9. 【冀宝er要逆袭】Faulty Odometer-码表跳跃问题
  10. win10下使用虚拟机VMware安装/制作纯净版苹果系统OS10.12.6教程及错误解决办法