我是elasticsearch的新手,我一直在使用它来存储从web上抓取的数据,并将其传递给kibana进行分析。
然而,我一直需要调优我的映射。据我所知,我不能动态地更改现有字段的映射。到目前为止,每次我不得不对我的映射进行调整时,我必须删除索引,创建一个新的映射,然后再次爬行(痛苦!)。
因此,我想要做的是轻松地分别备份现有爬网和映射中的数据,这样我就可以在增量地调整映射时只恢复数据。
我已经研究过使用elasticdump,但是虽然我可以创建映射和数据的json输出似乎相当明显,但我还可以使用elasticdump从那些创建和归档的json文件中重新导入数据和/或映射吗?
感谢您的任何想法/建议!
发布于 2016-08-16 20:02:44
最后,我使用了elasticdump,它非常容易使用,而且非常简单。
我还没有用不同的映射重新创建我的elasticsearch数据库,所以还没有测试我认为需要的完整循环。但我可以报告,elasticdump允许您以json格式导出整个数据集(包括每个条目的索引项)和单独的映射。您也可以单独导出分析器,但我没有必要这样做。
现在有了这两个文件-如果我需要创建一个新实例,但具有不同的映射和分析器设置,我相信我可以手动调整映射文件,将映射导入新数据库,然后导入数据。然后,当我使用kibana进行可视化时,我只需要拿起新的索引。
以下是一些便于参考的命令:
npm install elasticdump -g然后对于数据:
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=/data/my_index_data.json \
--type=data然后对于映射:
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=/data/my_index_mapping.json \
--type=mapping当我抽出时间在新的环境中测试时,我将能够确认重新导入的实际测试,但我认为我现在应该更新,以防其他人也在考虑选项。
(仅供参考,您还可以从一个ES数据库导出并直接输出到另一个数据库)...
发布于 2016-11-30 00:30:13
您可以使用elasticsearch本身提供的快照和恢复api对elasticsearch数据进行备份。示例:
PUT /_snapshot/my_backup/snapshot_1
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false
}是一个博客文章,解释了“如何备份elasticsearch数据”,如果你想看看备份和恢复的实际效果,那就看这个吧
发布于 2016-07-14 05:42:31
有几种方法可以更改Elasticsearch中的映射,而不需要停机,也不需要完全重建索引。
reindex接口,可以在here中找到。scroll和bulk应用程序接口来从一个索引重新索引到一个较新的索引。关键是要使用aliases,以便保持相同的“索引”名称,同时仍然更改其映射。其描述为here。关键概念是为每个索引创建一个别名,并使用该别名来索引数据,而不是实际的索引名。一旦需要更改映射,就用新的映射创建一个新的索引,一旦将所有数据重新索引到新的索引,就可以更改别名以指向新的索引。关于保存索引,我不知道在Elasticsearch中没有映射保存索引的官方方法。
无论如何,如果您希望将数据移动到另一个位置的另一个集群,然后对其进行重新索引。你可能会发现this上关于在亚马逊S3中快照/恢复Elasticsearch数据的文章很有帮助。
此link指向Elasticsearch文档,说明如何对其他文件系统进行快照/恢复。
希望我能帮上忙!
https://stackoverflow.com/questions/38346678
复制相似问题