Elasticsearch各种高级文档操作3

本文来记录几种Elasticsearch的文档操作

文章目录

  • 初始化文档数据
  • 聚合查询文档
    • 概述
    • [对某个字段取最大值 max 示例](#对某个字段取最大值 max 示例)
    • [对某个字段取最小值 min 示例](#对某个字段取最小值 min 示例)
    • [对某个字段求和 sum 示例](#对某个字段求和 sum 示例)
    • [对某个字段取平均值 avg 示例](#对某个字段取平均值 avg 示例)
    • [对某个字段的值进行去重之后再取总数 示例](#对某个字段的值进行去重之后再取总数 示例)
  • [State 聚合查询文档](#State 聚合查询文档)
  • 桶聚合查询文档
    • 概述
    • [terms 聚合,分组统计的示例](#terms 聚合,分组统计的示例)
    • [在 terms 分组下再进行聚合的示例](#在 terms 分组下再进行聚合的示例)
  • 本文小结

初始化文档数据

在进行各种文档操作之前,我们先进行初始化文档数据的工作


聚合查询文档

概述

聚合允许使用者对 es 文档进行统计分析,类似与关系型数据库中的 group by,当然还有很多其他的聚合,例如取最大值、平均值等等。


对某个字段取最大值 max 示例

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

服务器响应结果

xml 复制代码
{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 4,
            "relation": "eq"
        },
        "max_score": null,
        "hits": []
    },
    "aggregations": {
        "max_age": {
            "value": 25.0
        }
    }
}

对某个字段取最小值 min 示例

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

服务器响应结果

xml 复制代码
{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 4,
            "relation": "eq"
        },
        "max_score": null,
        "hits": []
    },
    "aggregations": {
        "min_age": {
            "value": 20.0
        }
    }
}

对某个字段求和 sum 示例

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

服务器响应结果

xml 复制代码
{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 4,
            "relation": "eq"
        },
        "max_score": null,
        "hits": []
    },
    "aggregations": {
        "sum_age": {
            "value": 88.0
        }
    }
}

对某个字段取平均值 avg 示例

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

服务器响应结果

xml 复制代码
{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 4,
            "relation": "eq"
        },
        "max_score": null,
        "hits": []
    },
    "aggregations": {
        "avg_age": {
            "value": 22.0
        }
    }
}

对某个字段的值进行去重之后再取总数 示例

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:


State 聚合查询文档

概述

stats 聚合,对某个字段一次性返回 count,max,min,avg 和 sum 五个指标。


操作实例

在 apifox 中,向 ES 服务器发 GET请求 :http://localhost:9200/person/_search,请求体内容为:

服务器响应结果


桶聚合查询文档

概述

桶聚和相当于 sql 中的 group by 语句。


terms 聚合,分组统计的示例

在 apifox 中,向 ES 服务器发 POST 请求 :http://localhost:9200/person/_search,请求体内容为:

查询成功后,服务器响应结果

xml 复制代码
{
    "took": 4,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 4,
            "relation": "eq"
        },
        "max_score": null,
        "hits": []
    },
    "aggregations": {
        "age_groupby": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
                {
                    "key": 20,
                    "doc_count": 1
                },
                {
                    "key": 21,
                    "doc_count": 1
                },
                {
                    "key": 22,
                    "doc_count": 1
                },
                {
                    "key": 25,
                    "doc_count": 1
                }
            ]
        }
    }
}

在 terms 分组下再进行聚合的示例

在 apifox 中,向 ES 服务器发 POST 请求 :http://localhost:9200/person/_search,请求体内容为:

查询成功后,服务器响应结果

xml 复制代码
{
    "took": 7,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 4,
            "relation": "eq"
        },
        "max_score": null,
        "hits": []
    },
    "aggregations": {
        "age_groupby": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
                {
                    "key": 20,
                    "doc_count": 1,
                    "sum_age": {
                        "value": 20.0
                    }
                },
                {
                    "key": 21,
                    "doc_count": 1,
                    "sum_age": {
                        "value": 21.0
                    }
                },
                {
                    "key": 22,
                    "doc_count": 1,
                    "sum_age": {
                        "value": 22.0
                    }
                },
                {
                    "key": 25,
                    "doc_count": 1,
                    "sum_age": {
                        "value": 25.0
                    }
                }
            ]
        }
    }
}

本文小结

本文记录了Elasticsearch几种常见的文档操作

相关推荐
KmSH8umpK1 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第七篇
数据库·redis·分布式
二哈赛车手5 小时前
新人笔记---ES和kibana启动问题以及一些常用的linux的错误排查方法,以及ES,数据库泄密解决方案[超详细]
java·linux·数据库·spring boot·笔记·elasticsearch
_F_y6 小时前
仿RabbitMQ实现消息队列-服务端核心模块实现(4)
分布式·rabbitmq
Albert Edison10 小时前
【RabbitMQ】发布确认模式(使用案例)
分布式·rabbitmq·ruby
摇滚侠10 小时前
数据同步 黑马 Elasticsearch 全套教程,黑马旅游网案例
大数据·elasticsearch·搜索引擎
EXnf1SbYK11 小时前
Redis分布式锁进阶第十二篇:全系列终极兜底复盘 + 锁架构巡检落地 + 线上零事故收尾方案
redis·分布式·架构
EXnf1SbYK11 小时前
Redis分布式锁进阶第八篇:锁超时乱序深度踩坑 + 看门狗失效真实溯源 + 业务长耗时标准化兜底方案
数据库·redis·分布式
EXnf1SbYK11 小时前
Redis分布式锁进阶第十一篇
数据库·redis·分布式
南棱笑笑生12 小时前
20260503给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Android14时适配AP6256
大数据·elasticsearch·搜索引擎·rockchip
biyezuopinvip12 小时前
分布式风电场低电压穿越故障建模与仿真
分布式·matlab·毕业设计·毕业论文·分布式风电场·低电压穿越故障·建模与仿真