Elasticsearch 从入门到实战:文档聚合操作及总结

四、文档操作:数据的增删改查

4.1 添加文档

文档(Document)是索引中的最小数据单元,使用 `POST` 或 `PUT` 添加:

```json

POST /products/_doc/1

{

"name": "华为Mate50 Pro",

"price": 6999.0,

"category": "手机",

"create_time": "2023-10-01"

}

```

4.2 查询文档

  • 根据ID查询:

```bash

GET /products/_doc/1

```

  • 条件查询(查找价格低于7000的手机):

```json

GET /products/_search

{

"query": {

"bool": {

"must": [

{ "term": { "category": "手机" } },

{ "range": { "price": { "lt": 7000 } } }

]

}

}

}

```

4.3 更新与删除文档

```json

POST /products/_update/1

{

"doc": {

"price": 6599.0

}

}

DELETE /products/_doc/1

```

五、数据聚合:挖掘数据的深层价值

聚合(Aggregation)是 ES 的杀手级功能,支持多维数据分析。

5.1 指标聚合:统计基础数值

```json

GET /products/_search

{

"size": 0,

"aggs": {

"avg_price": { "avg": { "field": "price" } },

"max_price": { "max": { "field": "price" } }

}

}

```

5.2 桶聚合:分组统计

按商品类别分组,统计每个类别的商品数量:

```json

GET /products/_search

{

"size": 0,

"aggs": {

"category_count": {

"terms": { "field": "category" }

}

}

}

```

5.3 嵌套聚合:复杂分析场景

统计每个商品类别下的平均价格:

```json

GET /products/_search

{

"size": 0,

"aggs": {

"category_group": {

"terms": { "field": "category" },

"aggs": {

"avg_price": { "avg": { "field": "price" } }

}

}

}

}

```

六、最佳实践与常见问题

6.1 性能优化建议

  • 合理设置分片数:分片过多会导致资源浪费,过少影响并发。

  • 冷热数据分离:使用 ILM(索引生命周期管理)自动迁移旧数据。

  • 避免大结果集:使用 `scroll` API 分页查询海量数据。

6.2 常见问题排查

  • 脑裂问题:配置 `discovery.zen.minimum_master_nodes` 避免集群分裂。

  • 索引只读:磁盘空间不足时,ES 会自动将索引设为只读模式。

七、总结

Elasticsearch 的强大不仅在于其检索速度,更在于其灵活的数据分析能力。无论是构建实时日志监控系统,还是实现复杂的商业智能分析,ES 都能提供高效的解决方案。

相关推荐
C雨后彩虹14 小时前
任务最优调度
java·数据结构·算法·华为·面试
heartbeat..14 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
Jing_jing_X14 小时前
AI分析不同阶层思维 二:Spring 的事务在什么情况下会失效?
java·spring·架构·提升·薪资
元Y亨H16 小时前
Nacos - 服务发现
java·微服务
微露清风16 小时前
系统性学习C++-第十八讲-封装红黑树实现myset与mymap
java·c++·学习
dasi022716 小时前
Java趣闻
java
阿波罗尼亚17 小时前
Tcp SSE Utils
android·java·tcp/ip
susu108301891117 小时前
springboot3.5.8整合minio8.5.9
java·springboot
不知道累,只知道类17 小时前
深入理解 Java 虚拟线程 (Project Loom)
java·开发语言
myzshare18 小时前
实战分享:我是如何用SSM框架开发出一个完整项目的
java·mysql·spring cloud·微信小程序