刚接触 Elasticsearch 吗?欢迎参加我们的 Elasticsearch 入门网络研讨会。您也可以开始免费云服务试用,或立即在您的计算机上试用 Elastic。
在 Elasticsearch 中,从文档中删除字段是一项常见需求。当您想从索引中删除不必要或过时的信息时,这将非常有用。在本文中,我们将讨论从 Elasticsearch 文档中删除字段的不同方法以及示例和分步说明。
方法 1:使用更新 API
Update API 允许您通过提供一段修改文档源数据的脚本来更新文档。您可以通过将字段值设为 null 来使用此 API 删除文档中的字段。以下是详细的操作步骤:
1.确定要更新的文档的索引、文档类型(如果使用 Elasticsearch 6.x 或更早版本)和文档 ID。
2.使用更新 API 并编写脚本,将字段设置为空,或者更好的做法是从源文档中删除该字段。下面的示例演示了如何从 "my_index "索引中 ID 为 "1 "的文档中删除 "field_to_delete "字段:
3.执行请求。如果成功,Elasticsearch 将返回一个响应,表明文档已被更新。
注意:此方法只能从指定文档中删除字段。该字段仍将存在于映射和索引中的其他文档中。
方法二:使用修改后的源数据进行重新索引
若要从某个索引的所有文档中删除一个字段,您可以使用 Reindex API 来创建一个包含修改后源数据的新索引。具体操作如下:
1.创建一个新索引,其设置和映射与原始索引相同。您可以使用获取索引 API 来检索原始索引的设置和映射。
2.使用重新索引 API 将原始索引中的文档复制到新索引中,同时从源中删除字段。下面的示例演示了如何从 "my_index "索引中的所有文档中删除 "field_to_delete "字段:
3.验证新索引是否包含已删除字段的正确文件。
4.如果一切正常,就可以删除原始索引,如有必要,还可以为新索引添加一个别名,其名称与原始索引名称相同。
方法三:更新映射并重新索引
如果要从映射和索引中的所有文档中删除某个字段,可以更新映射,然后重新索引文档。具体方法如下
1.创建一个新索引,设置与原始索引相同。
2.使用获取映射 API 检索原始索引的映射。
3.修改映射,删除要删除的字段。
4.使用 Put Mapping API 将修改后的映射应用到新索引。
5.如方法 2 所述,使用重新索引 API 将原始索引中的文档复制到新索引中。
6.验证新索引是否包含已删除字段的正确文件,以及映射中是否不存在该字段。
7. 如果一切正常,您可以删除原始索引,并在必要时为新的索引添加一个与原始索引同名的别名。
结论
在本文中,我们讨论了从 Elasticsearch 文档中删除字段的三种方法:使用 Update API、使用修改后的源重新索引,以及更新映射并重新索引。每种方法都有自己的用例和权衡,因此请选择最适合您要求的方法。在将更改应用到生产环境之前,请务必记住测试更改并验证结果。
常见问题
什么是 Update API?
该 API 允许您通过提供一段脚本来更新文档,脚本可以修改文档的源数据,例如将某个字段设为 null 或将其移除。
什么是 Reindex API?
该 API 用于将文档从原始索引复制到新的目标索引,同时在迁移过程中修改源数据(例如删除某个字段)。
什么是映射?
它是索引既定的结构;要从索引中彻底删除一个字段,您必须修改映射(移除此字段的定义),然后重新索引数据。
删除 Elasticsearch 文档中的字段有何益处?
当您希望从索引中移除不必要或过时的信息时,删除 Elasticsearch 文档中的字段会很有用。




