我的ElasticSearch索引中有大量的数据。我更改了索引的default analyzer,因此基本上我需要重新索引我的数据,以便使用新的分析器再次对其进行分析。因此,不是创建一个测试脚本来删除ES索引中的所有现有数据,然后重新添加数据,我想是否有一个备份/恢复模块可以使用。作为其中的一部分,我找到了ES支持的快照/恢复模块- ElasticSearch-SnapshotAndRestore。
我的问题是-如果我使用上面的ES快照/恢复模块,它实际上会导致数据被重新分析吗?由于我更改了默认分析器,因此需要重新分析数据。如果没有,您是否建议使用替代工具/模块来允许纯数据导出和导入,从而导致在导入过程中重新分析数据?
DevUser
发布于 2014-07-25 02:46:29
不,它不会重新分析数据。您将需要重新索引您的数据。
幸运的是,这在Elasticsearch中相当简单,因为它默认存储文档的源代码:
为您的data重建索引
虽然您可以向索引添加新类型或向类型添加新字段,但不能添加新分析器或对现有字段进行更改。如果执行此操作,已编制索引的数据将不正确,并且您的搜索将不再按预期工作。
将这些更改应用于现有数据的最简单方法是重新编制索引:使用新设置创建新索引,并将旧索引中的所有文档复制到新索引中。
_source字段的一个优点是您已经在Elasticsearch中获得了整个文档。您不必从数据库重新构建索引,这通常要慢得多。
要有效地对旧索引中的所有文档重新编制索引,请使用scan & scroll从旧索引中检索批量文档,并使用bulk API将它们推入新索引。
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/reindex.html
在采用这种方法之前,我已经阅读了Scan and Scroll:
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/scan-scroll.html
TaskRabbit确实开源了一个导入/导出工具,但我没有使用过它,所以我不推荐它,但它值得一看:
https://stackoverflow.com/questions/24940210
复制相似问题