从 Elasticsearch 文档中删除字段

了解如何使用 Update API、脚本或重新索引,从 Elasticsearch 文档中删除字段,支持单次及批量操作。

刚接触 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 文档中的字段会很有用。

相关内容

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。

亲自试用