Elasticsearch 将文档字段值从整数更新为字符串

Elasticsearch update document field value from interger to string

我有一个弹性搜索索引,其中一个字段映射到关键字的数据类型 这意味着字段将接受所有数据类型 因此,我在弹性搜索索引

的同一字段中收到了字符串和整数值

现在,我想将所有整数值更新为字符串

例如:文档

{
    "_index": "my-index",
    "_type": "my_index_doc",
    "_id": "PqLbOW4BtJ-51rS9hMsm",
    "_score": null,
    "_source": {
        "user_id": 1019407,
    },
    "sort": [
        1572928717850
    ]
}

所以我想更改所有文档数据,其中 user_id 字段是整数,然后将其值更改为字符串,如下所示

预期文档:

{
    "_index": "my-index",
    "_type": "my_index_doc",
    "_id": "PqLbOW4BtJ-51rS9hMsm",
    "_score": null,
    "_source": {
        "user_id": "1019407",
    },
    "sort": [
        1572928717850
    ]
},

我们可以通过针对所有文档的弹性搜索更新查询来实现吗/任何其他解决方案?

如有错误请多多包涵

提前致谢

您可以利用 Update by Query API 来实现这一点。只需 运行 这个:

POST my-index/_update_by_query
{
  "script": {
    "source": "ctx._source.user_id = Integer.toString(ctx._source.user_id);",
    "lang": "painless"
  },
  "query": {
    "match_all": {}
  }
}