Elasticsearch文档操作全攻略,Gateway 集成 JWT 身份认证:微服务统一认证的实战指南。
·
Elasticsearch 文档操作的核心方法
索引文档
通过HTTP PUT或POST请求将文档添加到索引中。PUT需指定ID,POST由Elasticsearch自动生成ID。
示例(使用PUT):
PUT /my_index/_doc/1
{
"title": "Elasticsearch Guide",
"content": "Distributed search and analytics engine",
"tags": ["search", "database"]
}
获取文档
使用GET请求通过ID检索文档,可通过_source字段过滤返回内容。
示例:
GET /my_index/_doc/1
更新与删除文档
部分更新
使用_update端点结合doc或script进行局部修改。脚本更新支持Painless语言。
示例(使用doc):
POST /my_index/_update/1
{
"doc": {
"tags": ["search", "database", "nosql"]
}
}
删除文档
通过DELETE请求移除文档,删除后不会立即从磁盘清除,而是在段合并时清理。
示例:
DELETE /my_index/_doc/1
批量操作与版本控制
批量API
通过_bulk端点实现索引、更新、删除的批量处理,减少网络开销。每行需包含操作类型和元数据。
示例:
POST _bulk
{ "index" : { "_index" : "my_index", "_id" : "2" } }
{ "title": "Bulk API", "category": "operations" }
{ "delete" : { "_index" : "my_index", "_id" : "1" } }
乐观并发控制
使用version参数或外部版本号(version_type=external)避免写冲突。版本号不匹配时操作失败。
示例:
PUT /my_index/_doc/1?version=2&version_type=external
{
"title": "Concurrency Control"
}
高级文档操作技巧
路由优化
指定routing参数将相关文档存储在同一分片,提升查询效率。
示例:
PUT /my_index/_doc/3?routing=user123
{
"user_id": "user123",
"action": "login"
}
实时获取
通过GET请求的realtime参数(默认启用)确保读取最新数据,或结合refresh立即刷新索引。
示例:
GET /my_index/_doc/3?realtime=true
字段更新检测
使用detect_noop=false强制更新即使内容未变化,适用于需要触发副作用的场景。
示例:
POST /my_index/_update/3
{
"detect_noop": false,
"doc": { "last_updated": "2023-10-01" }
}
更多推荐
所有评论(0)