Elasticsearch 重建索引

Elasticsearch Reindex

有一个我想应用更新映射的索引,我已尽力遵循 ES 和 Whosebug 上的文档,但我现在卡住了。

原始索引:logstash-index-YYYY.MM 中有数据
我创建了索引:logstash-index-new-YYYY.MM(它有一个新映射的模板)

使用以下查询:
/logstash-index-YYYY.MM/_search?search_type=scan&scroll=1m
{ "query":{ "match_all":{} }, "size": 30000 }

我得到一个 _scroll_id 并且我的文档不到 30k,所以我应该只需要 运行 一次。

如何使用该 ID 将数据推送到新索引中?

您没有使用 scrollid 将数据推入新索引。您可以使用它从滚动查询中获取另一部分数据。

当您 运行 扫描查询时,第一遍不会 return 任何结果,它会扫描集群中的分片和 returns scrollid。另一遍(使用第一遍的 scrollid)将 return 实际结果。

如果您想将该数据放入新索引,您应该用您选择的语言编写某种简单的程序来获取这些数据,然后将其放入您的新索引。

elasticsearch 博客上有一个非常好的 article 如何动态更改索引的映射。不幸的是,重建索引本身并未包含在此处。