在ElasticSearch 6+中从文档中批量删除属性

时间:2019-02-07 16:38:05

标签: elasticsearch elasticsearch-bulk-api bulk-delete

我需要从ElasticSearch中的所有文档中删除特定属性。有没有一种方法可以做到,并且可以通过Bulk API完成。我找不到要从ElasticSearch批量删除属性的API。

有没有办法实现相同的目标?

我的文档的一部分:

  

{“ media”:{“ list1”:[{“ title”:“ a”}],“ list2”:[{“ title”:“ b”}]}}}

删除相同脚本的脚本:

  

{“ script”:“ ctx._source.remove('media.list1')”,“ query”:{“ bool”:{“ must”:[{“ exists”:{“ field”:“ media .list1“}}]}}}

1 个答案:

答案 0 :(得分:1)

如果您只想从文档中删除一个字段(而不是删除整个文档),则需要使用轻松的脚本。请参阅问题post,以作为编写脚本以从文档中删除字段的参考。

要更新索引中的所有文档,请使用无障碍脚本将{_3}}内的字段删除,并使用match_all作为“查询”来更新所有文档。

您不想为此使用Bulk API。如果您想用新信息替换整个文档(更新),则将使用批量API。