REST API
本文是常用 REST API 的速查入口:关键行为边界在此点到为止,机制与深入内容链接到对应专题章节。
1. 集群健康
bash
GET /_cluster/health2. 索引操作
bash
# 创建索引
PUT /my-index
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
# 查看索引
GET /my-index
# 删除索引(破坏性操作:没有快照等备份时,无法通过 API 撤销删除)
DELETE /my-index3. 文档操作
bash
# 索引文档
POST /my-index/_doc/1
{
"name": "张三",
"age": 25
}
# 获取文档
GET /my-index/_doc/1
# 更新文档
POST /my-index/_update/1
{
"doc": { "age": 26 }
}
# 删除文档
DELETE /my-index/_doc/1写入请求成功返回,不代表文档立即能被搜索到:搜索可见性取决于索引刷新,而写入确认、持久性与可见性是三个不同的问题。活跃索引默认通常每秒刷新一次(由 index.refresh_interval 控制,实际受配置和负载影响)。需要写入后立即可搜时,可加 ?refresh=wait_for 等待本次写入通过正常刷新变为搜索可见,或 ?refresh=true 立即触发刷新——后者会抬高写入与后续查询成本,不适合当作普通写入的默认做法。部分更新的并发冲突与乐观并发控制见文档 CRUD,写入从请求到可见的完整链路见写入流程。
4. 批量操作
bash
POST /_bulk
{"index": {"_index": "my-index", "_id": "1"}}
{"name": "张三", "age": 25}
{"index": {"_index": "my-index", "_id": "2"}}
{"name": "李四", "age": 30}请求体是 NDJSON:每行一个独立的 JSON 对象,不是 JSON 数组,且末行必须以换行符结束。除 index 外还有三类操作,行结构各不相同:
bash
POST /_bulk
{"create": {"_index": "my-index", "_id": "3"}}
{"name": "王五", "age": 28}
{"update": {"_index": "my-index", "_id": "1"}}
{"doc": {"age": 26}}
{"delete": {"_index": "my-index", "_id": "2"}}index:新增或整篇替换文档create:目标文档必须不存在,适合只允许首次写入的场景update:第二行必须是{"doc": {...}}之类的更新载荷delete:只有操作行,没有数据行
响应返回 HTTP 200 不等于每条都成功:要检查响应体的 errors 字段,并逐项核对 items[].status 和 items[].error。单个操作执行失败通常不会阻止其他操作继续处理,但请求体格式错误等请求级问题会导致整个请求失败;盲目重试整个批次可能重复执行已成功的操作,应只重试失败项。单条操作的语义详见文档 CRUD。
5. Kibana Dev Tools
- 本地默认部署通常为
http://localhost:5601/app/dev_tools,实际地址以部署配置为准 - 支持语法高亮、自动补全
6. 搜索查询
bash
# 基本搜索
GET /my-index/_search
{
"query": {
"match": { "name": "张三" }
}
}
# 布尔组合查询
GET /my-index/_search
{
"query": {
"bool": {
"must": [{ "match": { "name": "张三" } }],
"filter": [{ "range": { "age": { "gte": 20, "lte": 30 } } }]
}
},
"sort": [{ "age": "asc" }],
"from": 0,
"size": 10
}更多查询语法与组合方式见查询 DSL。
7. 聚合查询
bash
GET /my-index/_search
{
"size": 0,
"aggs": {
"avg_age": { "avg": { "field": "age" } },
"age_ranges": {
"range": {
"field": "age",
"ranges": [
{ "to": 20 },
{ "from": 20, "to": 30 },
{ "from": 30 }
]
}
}
}
}8. 常用 _cat API
bash
GET /_cluster/health
GET /_cat/indices?v&s=index
GET /_cat/nodes?v
GET /_cat/shards?v
GET /_cat/allocation?v9. 最佳实践
- 使用 Kibana Dev Tools 进行 API 调试
- 批量操作使用
_bulkAPI;5~15MB 可作为批次大小的压测起点,按文档大小、写入吞吐和失败重试成本调优。http.max_content_length默认 100MB 是请求体上限,不是推荐的批次大小 - 使用
_source过滤减少网络传输量 - 生产环境限制
_catAPI 的访问权限