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 都能提供高效的解决方案。

相关推荐
毕业设计制作和分享37 分钟前
springboot150基于springboot的贸易行业crm系统
java·vue.js·spring boot·后端·毕业设计·mybatis
小梁努力敲代码6 小时前
java数据结构--List的介绍
java·开发语言·数据结构
摸鱼的老谭6 小时前
构建Agent该选Python还是Java ?
java·python·agent
lang201509286 小时前
Spring Boot 官方文档精解:构建与依赖管理
java·spring boot·后端
夫唯不争,故无尤也7 小时前
Tomcat 启动后只显示 index.jsp,没有进入你的 Servlet 逻辑
java·servlet·tomcat
zz-zjx7 小时前
Tomcat核心组件全解析
java·tomcat
Deschen7 小时前
设计模式-外观模式
java·设计模式·外观模式
007php0077 小时前
百度面试题解析:微服务架构、Dubbo、Redis及其一致性问题(一)
redis·百度·docker·微服务·容器·职场和发展·架构
why技术7 小时前
从18w到1600w播放量,我的一点思考。
java·前端·后端
夫唯不争,故无尤也8 小时前
JavaWeb流式传输速查宝典
java·流式传输