Elasticsearch 删除、更改文档的过程?

在Elasticsearch中,文档是不可变的,也就是说,一旦一个文档被创建并索引,就不能直接修改或删除。这是由Elasticsearch的设计原理决定的,为了维护数据的完整性和一致性。

那么,如果需要删除或更改一个文档,应该如何操作呢?

  1. 删除文档:在Elasticsearch中,可以使用DELETE API来删除一个文档。当你发送一个DELETE请求给Elasticsearch时,你只需要提供要删除的文档的ID。例如:DELETE /index_name/document_type/document_id。请求发送后,Elasticsearch并不会立即从索引中删除这个文档,而是在.del文件中标记这个文档为已删除。当这个段合并到新的段时,已标记为删除的文档就不会被写入新的段。
  2. 更新文档:在Elasticsearch中,可以使用UPDATE API来更新一个文档。然而,UPDATE API并不是直接修改已存在的文档,而是创建一个全新的文档来替代旧的文档。当你发送一个UPDATE请求给Elasticsearch时,你需要在请求体中提供新的文档内容,并指定要更新的文档的ID。例如:POST /index_name/document_type/document_id/_update。请求发送后,Elasticsearch会先检查旧的文档的版本号,然后将新的文档索引到一个新的段中。

总的来说,为了维护数据的完整性和一致性,Elasticsearch不直接修改或删除已存在的文档。如果要删除或更改一个文档,需要创建一个新的文档来替代旧的文档。

发表评论

后才能评论