可以将特定类型的数据从具有多种类型的索引移动到具有一种类型的索引吗?

时间:2018-01-23 13:28:21

标签: elasticsearch

我升级到最新的ES6。 ES6不再支持多种类型,我目前在我的指标中。

因此,我想将特定类型的旧索引(mac-assign)中的所有数据复制到只有一种类型的新索引:doc。

我已从多个类型的索引中过滤掉旧数据:

GET pers-mac-data-prod/_search
{
   “query”: {
       “type” : {
           “value” : “mac-assign”
       }
   }
}

这就是我要添加到我的新索引pers-mac-assign-dev(类型为doc)的数据

有谁知道这是否可行以及如何? (我已经尝试过弹性体积但没有成功......)

2 个答案:

答案 0 :(得分:1)

我使用Elasticsearch Reindex API实现了这一点(感谢Chin Huang在评论中提出的建议):

POST _reindex
{
  "source": {
    "index": "pers-mac-data-prod",
    "type": "mac-assign"
  },
  "dest": {
    "index": "pers-mac-assign-dev",
    "type": "doc"
  }
}

NB!您还必须指定dest的类型。你可能认为这是隐含的,因为新的ES6只为每个索引处理一种类型,但是如果省略dest类型,它将导致错误,因为它将尝试考虑来自多种类型的源的映射。

答案 1 :(得分:0)

您应该可以使用elasticsearch input plugin使用logstash执行此操作 基本上,logstash将在旧实例上搜索与您的查询匹配的所有事件(在您的情况下按类型过滤),然后在您的logstash配置中为您的新实例定义elasticsearch输出。

请阅读链接,在其示例中,它指示_doc的排序,它应该存在于您的查询中以减少旧实例的负载(您不关心事件的处理顺序,因为您想要所有匹配您的查询的那些)