Elasticsearch 更新和删除文档的过程分别使用 Update API 和 Delete API。以下是它们的基本使用方法和过程:
更新文档:
使用 Update API 可以对现有文档进行部分更新,而不是重新索引整个文档。
POST /index_name/_update/document_id
{
"doc": {
"field1": "new_value1",
"field2": "new_value2"
}
}
/index_name
: 索引名称。document_id
: 要更新的文档的ID。doc
: 包含要更新的字段和值的部分文档。
在这个例子中,文档的 field1
和 field2
将会被更新为新的值。
删除文档:
使用 Delete API 可以删除现有文档。
DELETE /index_name/_doc/document_id
/index_name
: 索引名称。_doc
: 类型(在较新的 Elasticsearch 版本中,通常是_doc
类型)。document_id
: 要删除的文档的ID。
文档一旦被删除,它将不再存在于索引中。
注意事项:
-
批量更新和删除:
- 可以使用 Bulk API 批量处理更新和删除操作,以提高效率。
-
脚本更新:
- Update API 还支持使用脚本进行更新,可以在更新过程中执行自定义的脚本逻辑。
POST /index_name/_update/document_id { "script": { "source": "ctx._source.field1 = params.value", "params": { "value": "new_value" } } }
-
乐观并发控制:
- Elasticsearch 支持乐观并发控制,通过指定
if_seq_no
和if_primary_term
来确保在更新或删除操作时文档没有被其他操作修改。
POST /index_name/_update/document_id { "script": { "source": "ctx._source.field1 = params.value", "params": { "value": "new_value" } }, "if_seq_no": 1, "if_primary_term": 1 }
- Elasticsearch 支持乐观并发控制,通过指定
-
删除索引:
- 如果要删除整个索引,可以使用 Delete Index API:
DELETE /index_name
这些是基本的 Elasticsearch 更新和删除文档的方法。请根据实际需求和场景,选择适当的 API 进行操作。
Was this helpful?
0 / 0