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_hits聚合方式。
方式二:使用collapse折叠功能。

4、DSL源码

1)统计去重数目。

 1GET books/_search2{3"size":0,4"aggs" : {5"books_count" : {6"cardinality" : {7"field" : "title.keyword"8}9}
10}
11}

2)返回去重内容

方式一:top_hits聚合

 1GET books/_search2{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://mp.weixin.qq.com/s/OuIxXmB8cI1hXkKL7tvLrA?utm_medium=hao.caibaojian.com&utm_source=hao.caibaojian.com

import datetime
import jsonfrom elasticsearch import Elasticsearches = Elasticsearch(['192.168.0.0:9200'])
source_arr = ["fileName","flag"]def query_param():time1=datetime.datetime.now()res = es.search(index="ccat1",doc_type='demo0',from_=0,size=100000,body={"collapse": {"field": "fileName.keyword"},"_source": source_arr,"query":  {"bool": {"must": [# {"match": {"captureInfo.currentDistinguishNum": 0}},{"range": {"photo.capturenum": {"gte":0,"lte": 1}}},{"range": {"ymdh": {"gte": 2018072400,"lte": 2018072402}}}]}}})# query = {'query': {'match_all': {}}}# 查找所有文档print(len(res["hits"]["hits"]))for data in res["hits"]["hits"]:pass# print("http://192.168.0.100:",data["_source"]["uri"])if __name__ == '__main__':query_param()

Elasticsearch6 去重相关推荐

  1. Java操作Elasticsearch6实现count统计、distinct去重

    引言 很久没有更新Elasticsearch系列文章,一方面是之前学会的条件查询足以满足项目需求,另一方面是前段时间一直很忙,几个项目的需求交叉进行,没什么时间学习新的东西. 本篇博客将更新count ...

  2. Elasticsearch6.X 去重

    1.题记 Elasticsearch有没有类似mysql的distinct的去重功能呢? 1)如何去重计数?  类似mysql: select distinct(count(1)) from my_t ...

  3. ElasticSearch6.5.4快速入门

    一.ElasticSearch简介 1.概述 ES是一个使用Java语言并且基于Lucene编写的搜索引擎框架,他提供了分布式的全文搜索功能,提供了一个统一的基于RestFul风格的WEB接口,官方客 ...

  4. JAVA操作 ElasticSearch6.x 查询(内含中文测试数据)

    入门相关概念知识请看这篇 ElasticSearch6.x 入门 基础的增删改请看这篇   ElasticSearch6.x 基本操作 目录 准备工作 term & terms查询 match ...

  5. 【Elasticsearch】es 查询 去重

    1.概述 转载:Elasticsearch6.X 去重详解 1.题记 Elasticsearch有没有类似mysql的distinct的去重功能呢? 1)如何去重计数? 类似mysql: select ...

  6. python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...

  7. 对列表去重并保持原来的顺序

    首先,定义一个列表,即原列表: list1 = [0, 3, 2, 3, 1, 0, 9, 8, 9, 7]: 然后,使用set()对原列表去重list2 = list(set(list1)),得到[ ...

  8. Array 数组去重 总结10方法(7)

    1,常规双循环去重(缺点:循环次数较多) Array.prototype.unique1 = function(){if(this === null){throw new TypeError('&qu ...

  9. mysql 去重con_python 爬虫 实现增量去重和定时爬取实例

    前言: 在爬虫过程中,我们可能需要重复的爬取同一个网站,为了避免重复的数据存入我们的数据库中 通过实现增量去重 去解决这一问题 本文还针对了那些需要实时更新的网站 增加了一个定时爬取的功能: 本文作者 ...

最新文章

  1. Linux进程编程基础介绍
  2. mkl gt;=2018
  3. 中粮集团对话农民丰收节交易会-万祥军:订单农业丰收经
  4. 2.scala控制结构、函数、异常处理
  5. 安川机器人编程加电弧_安川AR2010机器人
  6. C语言 第八章 函数、指针与宏
  7. Docker:单机编排工具docker-compose [十二]
  8. HoloLens开发手记 - 使用HoloLens模拟器 Using HoloLens emulator
  9. sklearn knn 算法
  10. .Net 机器学习资源,你有想要的么
  11. linux系统notebook,RedNotebook——Linux环境桌面日记本
  12. python图像分类实验总结_第4章 图像分类(image classification)基础
  13. html计算梯形的面积,数学教案计算梯形的面积
  14. 新浪微博 发微博消息的处理
  15. 空间不足以提取VMware Tools解决方法
  16. 如何用机器学习算法计算特征重要性
  17. 2018年第50周-maven脚手架: jc-spring-boot-rest-archetype
  18. Angular4 - 路由
  19. 2021-12-11 WPF上位机 112-欧姆龙协议之FinsTCP协议
  20. 使用 Rust 语言开发 Erlang NIF

热门文章

  1. 开机秒全国99%电脑 实战UEFI安装Win8
  2. linux登录ssh怎么保存采集的脚本,ssh自动登录并且su的脚本
  3. 需要添加什么头文件_速冻水饺为什么需要食品添加剂?
  4. 稳定wow60级服务器,魔兽怀旧服:永久60级怀旧服是什么体验?
  5. 数据结构 - 反转单链表(C++)
  6. arm下的linux可以运行qt吗,Ubuntu平台Arm下QT环境搭建
  7. ise怎么更改编辑器_Win7系统时间更改不了的解决方法
  8. for oracle中pivot_Python数据处理小技巧:pivot_table后如何拍平columns
  9. MySQL约束不起作用怎么解决_MySQL中的CHECK约束不起作用
  10. java 常用模块_Java 常见面试题的模块