当前位置: 首页 > news >正文

Elasticsearch 常用语法手册

🧰 Elasticsearch 常用语法手册

📚 目录

  • 索引操作
  • 文档操作
  • 查询操作
  • 聚合查询
  • 健康与状态查看
  • 常见问题与注意事项

🔹 索引操作

查询全部索引

GET _search

创建索引

PUT /es_db

创建索引并设置分片数和副本数

PUT /es_db
{"settings": {"number_of_shards": 3,"number_of_replicas": 2}
}

查询索引是否存在

HEAD /es_db

查询索引详情

GET /es_db

删除索引

DELETE /es_db

修改索引配置(如副本数)

PUT /es_db/_settings
{"index": {"number_of_replicas": 1}
}

添加 IK 分词器

PUT /es_db
{"settings": {"index.analysis.analyzer.default.type": "ik_max_word"}
}

🔹 文档操作

添加文档

PUT /es_db/_doc/1
{"name": "张三","age": 10,"address": "深圳市宝安区海谷科技大厦"
}

查询文档

GET /es_db/_search

局部更新文档

POST /es_db/_update/5
{"doc": {"age": 22}
}

删除文档

DELETE /es_db/_doc/5

🔹 查询操作

条件查询(match)

GET /es_db/_search
{"from": 0,"size": 20,"query": {"match": {"name": "张三"}}
}

条件查询(q 参数)

GET /es_db/_search?q=name:庆

短语匹配查询(match_phrase)

POST /es_db/_search
{"query": {"match_phrase": {"name": "张三"}}
}

使用过滤器查询(post_filter)

GET /es_db/_search
{"query": {"match_all": {}},"post_filter": {"range": {"age": {"gte": 10,"lte": 20}}}
}

高亮显示

POST /es_db/_search
{"query": {"match_phrase": {"name": "张三"}},"highlight": {"fields": {"name": {}}}
}

🔹 聚合查询

terms 聚合(按字段统计)

GET /es_db/_search
{"query": { "match_all": {} },"aggs": {"name": {"terms": {"field": "address.keyword"}}}
}

⚠️ 注意:text 类型字段不能直接用于聚合,需使用 .keyword 子字段或开启 fielddata=true(占用较多内存)

avg 聚合(求平均值)

GET /es_db/_search
{"query": { "match_all": {} },"aggs": {"name": {"avg": {"field": "age"}}}
}

🔹 健康与状态查看

查看集群健康状态

GET _cat/health

查看索引情况

GET _cat/indices?v

❗ 常见问题与注意事项

text vs keyword

  • text 类型适合全文搜索,会进行分词。
  • keyword 类型不会分词,适合精确匹配、排序、聚合等操作。
  • 如果需要对 text 字段进行排序或聚合,可以:
    • 使用 .keyword 子字段;
    • 或在映射中设置 "fielddata": true,但注意内存消耗较大。

示例字段映射

PUT /es_db
{"mappings": {"properties": {"address": {"type": "text","fields": {"keyword": { "type": "keyword" }}}}}
}

排序 + 分页查询示例

GET /es_db/_search
{"from": 0,"size": 10,"query": {"bool": {"must": [{ "match": { "name": "张三" } }],"filter": [{ "range": { "age": { "gte": 18 } } }]}},"sort": [{ "createTime": "desc" }]
}

相关文章:

  • [吾爱出品] 中医问诊辅助记录软件
  • ES常识8:ES8.X如何实现热词统计
  • CPU cache基本原理
  • 基于javaweb的JSP+Servlet家政服务系统设计与实现(源码+文档+部署讲解)
  • 2900. 最长相邻不相等子序列 I
  • Windows注册表备份与恢复指南
  • AI大模型:(二)2.5 人类对齐训练自己的模型
  • JDK 1.8 全解析:从核心特性到企业实战的深度实践
  • WEB安全--Java安全--LazyMap_CC1利用链
  • 技术更新频繁,团队如何适应变化
  • 使用Python开发经典俄罗斯方块游戏
  • 海外短剧H5/App开源系统搭建指南:多语言+国际支付+极速部署
  • 9. 表的内连和外连
  • 如何在Google Chrome浏览器里-安装梦精灵AI提示词管理工具
  • 记录一下seata后端数据库由mariadb10切换到mysql8遇到的SQLException问题
  • 让三个线程(t1、t2、t3)按顺序依次打印 A、B、C
  • 入门消息队列
  • C# Try Catch Finally 执行顺序是什么?有返回值呢?
  • Google DeepMind 推出AlphaEvolve
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-docker MCP解析
  • 向猫学习禅修之后,你会发现将生活降格为劳作是多么愚蠢
  • 文化润疆|为新疆青少年提供科普大餐,“小小博物家(喀什版)”启动
  • 日本前卫艺术先驱群展上海:当具体派相遇古树古宅
  • KPL“王朝”诞生背后:AG和联赛一起迈向成熟
  • 内塔尼亚胡:以军将在未来几天“全力进入”加沙
  • 国务院关税税则委员会公布公告调整对原产于美国的进口商品加征关税措施