Kibana 通过将路由键更改为两个字段值的组合,将ElasticSearch文档重新索引到另一个索引中

i7uq4tfw  于 2023-05-12  发布在  Kibana
关注(0)|答案(2)|浏览(206)

我有一个现有的ElasticSearch索引,文档结构如下,没有routing_key

{
   "_id",
   "feild1"
   "field2"
}

我需要将数据迁移到新的索引中。索引的结构保持不变,但增加了routing_key。路由键需要更新为“field1_field2”。是否有一个简单的Kibana脚本来将数据迁移到新索引?

5t7ly7z5

5t7ly7z51#

一个简单的无痛和ElasticSearch的reindex API的组合可以用来实现这一点。

POST _reindex
{
  "source": {
    "index": "{old_index_name}",
    "size": {batch_size}
  },
  "dest": {
    "index": "{new_index_name}"
  },
  "script": {
    "lang": "painless",
    "inline": "if (ctx._source.participants.length > 0) {ctx._routing=ctx._source.field1+'-'+ctx._source.field2}"
  }
}
5gfr0r5j

5gfr0r5j2#

允许创建最新查询

POST _reindex?wait_for_completion=false // async call - you can track query progress if your index is huge - do GET _tasks/{your taskId}
{
  "source": {
    "index": *source index name*
  },
  "dest": {
    "index": *destination index name*
  },
  "script": {
    "source": """
  ctx._routing = ctx._source.field1+'-'+ctx._source.field2;
  """
  }
}

相关问题