elasticsearch(es) 如何针对指定字段进行去重相关查询,完成如聚合、分组、分页、类似求和统计等操作?

获取所有的不同值

es 获取指定字段所有可能的值,可以使用桶聚合的 terms 聚合,如下示例:

GET {index}/_search

{

"size": 0,

"aggs": {

"distinct_aggs": {

"terms": {

"field": "status"

}

}

}

}

如上示例,获取指定索引的 status 字段的不同值,size 字段设置为 0,表示搜索出来的文档数为 0 个,也表示不关心文档内容只要聚合结果。 如果为 1 ,就会搜索出 1 个文档。返回如下:

{

"took": 2,

"timed_out": false,

"_shards": {

"total": 3,

"successful": 3,

"skipped": 0,

"failed": 0

},

"hits": {

"total": 58439,

"max_score": 0,

"hits": []

},

"aggregations": {

"distinct_aggs": {

"doc_count_error_upper_bound": 0,

"sum_other_doc_count": 0,

"buckets": [

{

"key": 3,

"doc_count": 46619

},

{

"key": 2,

"doc_count": 11810

},

{

"key": 1,

"doc_count": 10

}

]

}

}

}

去重后分页

分页的话,肯定需要有排序规则,接着如上示例,增加的获取的条数参数 size 和 排序参数 order 即可:

GET {index}/_search

{

"size": 0,

"aggs": {

"distinct_aggs": {

"terms": {

"field": "item_id",

"size" : 1000,

"order": {

"_term": "asc"

}

}

}

}

}

输出如下:

{

"took": 1,

"timed_out": false,

"_shards": {

"total": 3,

"successful": 3,

"skipped": 0,

"failed": 0

},

"hits": {

"total": 58463,

"max_score": 0,

"hits": []

},

"aggregations": {

"distinct_aggs": {

"doc_count_error_upper_bound": 0,

"sum_other_doc_count": 0,

"buckets": [

{

"key": 1,

"doc_count": 32

},

{

"key": 2,

"doc_count": 11811

},

{

"key": 3,

"doc_count": 46620

},

...

]

}

}

}

聚合求和统计

聚合字段的排序,也可以通过指定字段的求和等计算统计结果后进行升降序排序,具体示例如下:

GET {index}/_search

{

"size": 0,

"aggs": {

"item_terms": {

"terms": {

"field": "item_id",

"size": 1000,

"order":[{

"gmv_stat": "desc"

},{

"gmv_180d": "desc"

}]

},

"aggs": {

"gmv_stat": {

"sum": {

"field": "gmv"

}

},

"gmv_180d": {

"sum": {

"script": "doc['gmv_90d'].value*2"

}

}

}

}

}

}

返回如下:

{

...

"aggregations": {

"item_terms": {

"doc_count_error_upper_bound": 0,

"sum_other_doc_count": 260,

"buckets": [

{

"key": 23388,

"doc_count": 18,

"gmv_stat": {

"value": 176220

},

"gmv_180d": {

"value": 89732

}

},

{

"key": 96117,

"doc_count": 16,

"gmv_stat": {

"value": 129306

},

"gmv_180d": {

"value": 56988

}

},

...

]

}

}

}

es 去重统计_es 去重查询(聚合、分组、分页、求和统计等)相关推荐

  1. Elasticsearch教程(4) High Level REST Client API 查询 聚合 分组

    ES High Level REST Client API 查询 聚合 1 准备数据 1.1 插入测试数据 2 Maven引入ES 3 创建Client 4 查询API 4.1 根据id查询单条数据 ...

  2. day056-58 django多表增加和查询基于对象和基于双下划线的多表查询聚合 分组查询 自定义标签过滤器 外部调用django环境 事务和锁...

    一.多表的创建 from django.db import models# Create your models here. class Author(models.Model):id = model ...

  3. 一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序...

    一:序列化概念 序列化(Serialization)是指把结构化对象转化为字节流. 反序列化(Deserialization)是序列化的逆过程.即把字节流转回结构化对象. Java序列化(java.i ...

  4. mysql group 分页_【MySQL】条件查询之排序聚合分组分页查询

    排序查询 语法:order by 子句 order by 排序字段1 排序方式1 , 排序字段2 排序方式2... 排序方式: ASC:升序,默认的. DESC:降序. 注意: 如果有多个排序条件,则 ...

  5. 情景分析通用—海量数据中统计最热门查询TOP10

    情景描述:云音乐中,每天有几千万的用户搜索歌曲,搜索引擎会通过日志文件把用户每次检索使用的所有检索query都记录下来,每个查询串的长度为1-255字节. 问题:目前我们云音乐准备开发热搜榜功能:假设 ...

  6. elasticsearch 条件去重_elasticsearch 笔记四 之聚合查询之去重计数、基础统计、百分位、字符串统计...

    这一节笔记还是聚合查询,以下是本节目录:去重统计 cardinality 基础统计 stats 百分位 percentiles 字符串统计 string_stats 1.去重统计 cardinalit ...

  7. Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)

    阅读目录 一.Django ORM 常用字段和参数: 二.单表查询 三.多表查询 基于双下划线的多表查询 四.聚合查询和分组查询 摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django OR ...

  8. day67 ORM模型之高阶用法整理,聚合,分组查询以及F和Q用法,附练习题整理

    归纳总结的笔记: day67ORM特殊的语法一个简单的语法 --翻译成--> SQL语句语法:1. 操作数据库表 创建表.删除表.修改表2. 操作数据库行 增.删.改.查怎么连数据库:需要手动创 ...

  9. day08 外键字段的增删改查 正向反向插叙概念 跨表查询 聚合查询与分组查询 F查询

    day08 外键字段的增删改查 正向反向插叙概念 跨表查询 聚合查询与分组查询 F查询 昨日内容复习 自定义过滤器.标签.inclusion_tag 1.首先现在应用目录下创建名字为templatet ...

最新文章

  1. Eureka服务注册中心
  2. linux setroubleshootd进程 内存占用过大
  3. Struts2 XML配置详解
  4. 浅谈最优化问题的KKT条件
  5. 【学习笔记】JS进阶语法一DOM基础
  6. 【转】RocketMQ的一些特性(生产者消费者配置参数的含义)
  7. html编辑器查找与替换,织梦kindeditor文本编辑器增加“查找替换”功能
  8. 我妈妈要求一台Linux计算机
  9. java 线程管理_Java平台线程管理
  10. 甩一个Microsoft office visio 2013的百度云连接
  11. 国家测绘法宣传日专题知识分享
  12. excel中输入身份证号后三位变成0怎么办
  13. 规格模式(Specification)
  14. CentOS 7.3安装详解
  15. 运行maven项目报错 :The forked VM terminated without saying properly goodbye. VM crash or System.exit calle
  16. 【计算情与思】大学生学习和发展的思考和建议
  17. 设置vscode默认终端为msys/MinGW32/MinGW64
  18. Houdini运行时崩溃了怎么办?别害怕,还有一点点救!
  19. 物联网技术与应用期末大作业
  20. 2048小游戏 java版(代码+注释)

热门文章

  1. Hive 中的各种常用set设置
  2. android 打开其它app,Android 在一个APP里打开另一个APP
  3. JavaScript基础——第五章,jQuery与JavaScript
  4. Gate使用手册(四)数据输出
  5. 使用fiddler抓取HTTPS协议数据与疑难杂症终极解决方案
  6. 华为--配置本地环回接口地址
  7. WslRegisterDistribution failed with error: 0x80070050
  8. flutter gridview item 有空隙
  9. css min-height 和 max-height
  10. android虹软人脸识别简书,C# 离线人脸识别 虹软ArcFace 2.0 demo