作为一名后端开发者,我在项目中多次用 Elasticsearch(简称 ES)解决海量数据检索问题。而 REST API 作为 ES 最核心的交互方式,既支持通过 Postman、curl 快速调试,也能轻松集成到 Java、Python 等业务代码中。但很多新手刚接触时,总会被 “索引”“映射”“文档” 这些概念绕晕,或是在 API 调用时踩 “格式错误”“参数遗漏” 的坑。今天就从核心概念讲起,带大家掌握 ES REST API 的用法,最后再通过 Java 实战落地,一篇文章搞定 ES API 开发!
一、先搞懂 3 个核心概念:避免 API 调用 “无的放矢”
在调用 ES REST API 前,必须先理清 3 个基础概念,否则写出来的 API 请求大概率会报错:
| 概念 |
类比关系(和 MySQL 对比) |
作用 |
| 索引(Index) |
数据库(Database) |
存储一类相似结构的数据,比如 “商品索引”“订单索引” |
| 映射(Mapping) |
表结构(Table Schema) |
定义索引中字段的类型(如 text、integer、date)、分词器、是否可检索等 |
| 文档(Document) |
行数据(Row) |
索引中具体的数据记录,用 JSON 格式存储,每个文档有唯一 ID |
简单说:你要操作 ES,第一步是创建 “索引”(建库),第二步定义 “映射”(建表结构),第三步才是增删改查 “文档”(操作数据)—— 这和 MySQL 的操作逻辑高度相似,先有这个认知,后续 API 学习会更顺畅。
二、ES REST API 核心操作:用 curl/Postman 实战演示
ES REST API 遵循 “HTTP 方法 + URL 路径 + JSON 请求体” 的格式,支持 GET(查询)、POST(新增 / 修改)、PUT(创建 / 全量更新)、DELETE(删除)等方法。下面用curl 命令演示高频操作(Postman 操作只需复制 URL 和请求体,选择对应 HTTP 方法即可)。
1. 索引操作:创建 / 查询 / 删除索引
(1)创建索引(含映射定义)
需求:创建 “product_index” 商品索引,定义字段:
- product_id:整数型(不可分词,作为唯一标识)
- product_name:文本型(需分词,支持中文检索)
- price:浮点型
- create_time:日期型
# 创建索引并定义映射
PUT http://localhost:9200/product_index
{
"mappings": {
"properties": {
"product_id": {
"type": "integer"
},
"product_name": {
"type": "text",
"analyzer": "ik_max_word" # 中文分词器(需提前安装IK插件)
},
"price": {
"type": "float"
},
"create_time": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss" # 日期格式
}
}
}
}
注意:ES 7.x 及以上版本已移除 “类型(Type)” 概念,直接在 mappings 下定义 properties,不要写类似 “_doc” 的类型名,否则会报错。
(2)查询索引结构
# 查询product_index的映射
GET http://localhost:9200/product_index/_mapping
# 查询所有索引列表
GET http://localhost:9200/_cat/indices?v # v参数表示显示表头
(3)删除索引
# 删除product_index(谨慎操作!会删除所有文档)
DELETE http://localhost:9200/product_index
2. 文档操作:增删改查核心 API
(1)新增文档(指定 ID)
# 新增文档,ID=1
PUT http://localhost:9200/product_index/_doc/1
{
"product_id": 1001,
"product_name": "华为Mate 60 Pro 5G手机",
"price": 6999.0,

最低0.47元/天 解锁文章
1891

被折叠的 条评论
为什么被折叠?



