添加从其他字段复制数据的字段

ste*_*ldo 3 elasticsearch

我有一个包含以下文件的索引:

[
    {
        "field1": "foo",
        "field2": "bar"
    },
    ...
]
Run Code Online (Sandbox Code Playgroud)

基本上,我需要的是一个字段添加field3到每个文档与field1field2连接起来并用分号隔开,像这样:

[
    {
        "field1": "foo",
        "field2": "bar",
        "field3": "foo;bar"
    },
    ...
]
Run Code Online (Sandbox Code Playgroud)

有什么方法可以将新列添加到我的所有文档中,从而自动复制其他字段中的值?

Ric*_*cha 5

然后使用以下查询:

POST /my_index/my_type/_update_by_query
{
"query": {
  "match_all": {}
},
"script": "ctx._source.field3 = ctx._source.field1 + ';' + ctx._source.field2"
}
Run Code Online (Sandbox Code Playgroud)

确保实现scriptingelasticsearch.yml重启ES。

这不需要重新索引

希望这对您有用。