Elasticsearch基础更新操作解析

需积分: 48 3 下载量 197 浏览量 更新于2024-08-18 收藏 810KB PPT 举报
"这篇内容主要介绍了Elasticsearch(ES)的基础知识,特别是关于文档的更新操作。ES通过PUT或POST方法可以对已有文档进行更新。在更新过程中,ES首先标记旧文档为删除状态,随后添加新文档,旧文档会在后台逐步被清理。此外,文中还提到了其他CRUD操作,如创建、删除和索引操作,并提到了使用Jackson库生成JSON对象,以及DFS在ES查询中的可能含义。" 在Elasticsearch中,文档的更新是一个涉及多个步骤的过程。当使用PUT或POST请求对已有ID的文档进行更新时,ES并不直接覆盖原有文档,而是采取以下策略: 1. **标记旧文档为删除**:首先,系统会将与请求ID匹配的现有文档标记为删除状态。这意味着在逻辑上该文档已被删除,但物理上它仍然存在于数据结构中。 2. **添加新文档**:接着,新的文档内容会被添加到索引中,分配相同的ID。这实际上创建了一个新的版本,与旧文档并存。 3. **后台清理**:旧的、被标记为删除的文档并不会立即从索引中移除,以确保数据一致性。ES会在后续的索引操作中,特别是在集群有足够空闲资源时,进行后台清理,实际移除这些已删除的文档。 此外,文章还提到了一些其他的ES操作示例: - **创建文档**:使用`create`命令来创建一个新的文档,如`{"create":{"_index":"test","_type":"type1","_id":"3"}} {"field1":"value3"}`。 - **删除文档**:通过`delete`命令删除指定ID的文档,如`{"delete":{"_index":"test","_type":"type1","_id":"2"}}`。 - **索引文档**:使用`index`命令将文档索引到指定的索引和类型,例如`{"index":{"_index":"crxy","_type":"emp","_id":"21"}} {"name":"test21"}`。 对于JSON对象的生成,文章提到了使用Jackson库。`jackson-databind`是一个Java库,可以方便地将Java对象转换为JSON格式,如`String json = mapper.writeValueAsString(yourBeanInstance);`。 最后,文章简要讨论了ES查询中的DFS概念,DFS可能是Distributed Frequency Scatter的缩写,涉及到分布式环境下查询时的词频和文档频率的处理。在查询之前,ES可能会先收集各分片的词频和文档频率信息,以便于后续的搜索操作。 这篇文章深入浅出地介绍了ES中的文档更新流程,以及其他基本操作,并提及了与JSON序列化和查询优化相关的概念。