ES的实战
总结
- Bulk API 支持批量写入,比逐条写入快很多
- term 字段支持精确、前缀、通配符、正则、ids 等多种查询方式
- bool 查询组合 must/filter/must_not/should,filter 不打分性能更好
1. 批量导入数据
用 Bulk API 批量写入,详细使用见 文档的操作:
curl -X POST "localhost:9200/_bulk" \
-H 'Content-Type: application/json' \
--data-binary @test.json
@test.json 是本地文件,Bulk 格式每两行一组(操作行 + 数据行):
{ "index": { "_index": "nba", "_id": "1" } }
{ "name": "哈登", "team_name": "火箭", "position": "得分后卫" }
{ "index": { "_index": "nba", "_id": "2" } }
{ "name": "库里", "team_name": "勇士", "position": "控球后卫" }
2. term 字段查询
详细 body 示例见 ES查询body合集,这里汇总关键点:
- 精确查询:完全匹配,对应
keyword字段 - 非空查询:字段存在且不为 null
- 前缀查询:字段值以指定前缀开头
- 通配符查询:
*多字符,?单字符 - 正则查询:正则表达式匹配
- ids 查询:按文档 ID 批量查
3. 范围查询
4. bool 查询
5. 排序与聚合
- sort 排序:支持多字段排序
- 指标聚合:avg / min / max / sum
- 桶聚合:terms 分组,类似 SQL 的 GROUP BY
6. 面试相关
ES 的实战问题在面试中很常见,如果你被问到批量写入或查询优化,可以重点准备 ES面试题 中的写入性能优化、查询性能优化相关问题。