Elasticsearch - 在不使用Logstash或滚动API的情况下重新索引数据的最佳方法是什么?

时间:2017-07-18 15:04:18

标签: elasticsearch nest reindex elasticsearch-1.7.5

我正在使用Elasticsearch 1.7.5版。在我升级到2.x版(甚至5.x版)之前,我需要重新索引五个大型索引,使它们符合2.x标准。

不幸的是,由于this problem,Logstash(和滚动API)无法重新索引我的数据。

我的问题:

  • 在不使用Logstash或滚动API的情况下重新索引数据的最佳方法是什么?
    • 如果可能,我更愿意使用Nest。

1 个答案:

答案 0 :(得分:1)

如果您的目标是Elasticsearch 5.0+,则可以使用reindex API将数据从远程Elasticsearch集群(1.7.5集群)重新索引到Elasticsearch 5.0 +。

NEST 5.x将reindex API公开为ReindexOnServer()方法

client.ReindexOnServer(r => r
    .Source(s => s
        .Remote(sr => sr
            // URI to 1.7.5 cluster
            .Host(new Uri("http://localhost:9201"))
        )
        .Index("entries")
    )
    .Destination(d => d
        .Index("entries")
    )
    .WaitForCompletion(true)
);

WaitForCompletion确定呼叫是否应等待reindex完成。如果这是错误的,则响应中的Task属性可用于使用tasks API

检查操作的状态