如何在elasticsearch中将字符附加到字符串?

How to append a character to a string in elasticsearch?

我正在尝试使用 _reindex API 编写转换。我的想法是我正在使用一个现有索引,我想重新索引它并在过程中将一个数字附加到几个哈希字符串参数的末尾(类型字符串)。这是一个可行的解决方案吗?

POST <index>/<index_type>/_reindex
{
  "source": {
    "index": "<index_name>"
  },
  "dest": {
    "index": "<new_index_name>",
  },
  "script": {
        "source": "ctx._source.bene_acc_no += '21' ",
        "source" : "ctx._source.orig_acc_no += '21' ",
        "source" : "ctx._source.owner_acc_no += '21' "
  }
}

或者我可以简单地使用 "source" : "ctx._source.owner_acc_no++" 吗?

最后,我是否需要担心重新索引映射,或者我是否可以假设这将在重新索引时自动完成。

提前谢谢你。

Reindex Api

You must set up the destination index before calling _reindex. Reindex does not copy the settings from the source index. Mappings, shard counts, replicas, and so on must be configured ahead of time.

如果在执行 reindex api 之前未创建新索引的映射,将动态创建映射,即字段的数据类型将从复制的第一个文档中推断出来。所以最好事先创建映射

重建索引语法

POST _reindex
{
  "source": {
    "index": "<source_index>"
  },
  "dest": {
    "index": "<destination_index>"
  },
  "script": {
      "source":"ctx._source.bene_acc_no += '21'; ctx._source.orig_acc_no += '21';ctx._source.owner_acc_no += '21'"
  }
}

如果 bene_acc_no 是文本类型

ctx._source.bene_acc_no += '21' 将在值后附加 21 前任。如果 bene_acc_no ="20" 那么新值将是 "2021"

如果值是存储为字符串的整数并且您希望递增该值 然后你可以使用下面的脚本 "ctx._source.bene_acc_no= (Integer.parseInt(ctx._source.bene_acc_no)+1).toString()"

如果 bene_acc_no 有字符

,上面将失败