4

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

有没有办法达到同样的效果。

我的文档的示例部分:

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

删除相同的脚本:

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

1 回答 1

2

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

要更新索引中的所有文档,请使用无痛脚本删除Update By Query API中的字段,使用 match_all 作为“查询”来更新所有文档。

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

于 2019-02-07T19:23:21.857 回答