Elasticsearch 如果不存在则插入单个键,不影响其他键

Elasticsearch Insert single key if not exists, without affecting other keys

在我的一些文档中,我有一个密钥 school。假设文件是​​:

{
    "id" : "123",
    "name" : "Robert",
    "school" : "Public"
}

现在,school 并非出现在所有文档中。我想在所有文档中插入 school 键,其中它还没有默认字符串。

我使用的是 Elasticsearch 版本号 2.4.5。我该怎么做?我在看批量更新吗?

我显然会为此使用 update by query API。您可以搜索所有没有 school 字段的文档并将其设置为您希望的任何默认值:

POST your-index/your-type/_update_by_query
{
  "query": {
    "bool": {
      "must_not": {
        "exists": {
          "field": "school"
        }
      }
    }
  },
  "script": {
    "inline": "ctx._source.school = 'dummy'"
  }
}

请注意,您需要enable dynamic scripting并重新启动您的 ES 服务器。