Elasticsearch REST API 完整指南:从核心概念到 Java 实战

作为一名后端开发者,我在项目中多次用 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,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值