我是elasticsearch的新手,并一直用它来存储来自网络的数据并将其传递给kibana进行分析.
但是我一直需要调整我的映射.从我收集的内容来看,我无法动态改变现有字段的映射.到目前为止,每次我必须对我的映射进行调整时,我必须删除索引,创建一个新的映射,然后再次抓取我的爬行(痛苦!).
所以我想要做的是分别从现有的爬网和映射中轻松备份数据,因此我可以在逐步调整映射时恢复数据.
我已经看过使用elasticdump,但是虽然我可以创建映射和数据的json输出,但是我可以使用elasticdump重新导入那些创建和存档的json文件的数据和/或映射吗?
感谢您的任何想法/建议!
Mik*_*e77 12
最后我使用了elasticdump,它非常容易使用和直接.
我还没有必须使用不同的映射重新创建我的elasticsearch数据库,所以没有测试完整的循环,因为我认为我需要.但我可以报告,elasticdump允许您以json格式(完整的每个条目索引条目)和映射分别导出整个数据集.您也可以单独导出分析仪,但我没有必要.
现在使用这两个文件 - 如果我需要创建一个新实例但具有不同的映射和分析器设置,我相信我可以手动调整映射文件,将映射导入新数据库然后导入数据.然后,当我使用kibana进行可视化时,我只需要获取新索引.
一些便于参考的命令:
npm install elasticdump -g
Run Code Online (Sandbox Code Playgroud)
然后是数据:
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=/data/my_index_data.json \
--type=data
Run Code Online (Sandbox Code Playgroud)
然后是映射:
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=/data/my_index_mapping.json \
--type=mapping
Run Code Online (Sandbox Code Playgroud)
当我在新环境中测试这个时,我将能够确认重新导入的实际测试,但我想我现在会更新,以防其他人也在考虑选项.
(仅供参考,您也可以从一个ES数据库导出并直接输出到另一个数据库)...
您可以使用快照备份Elasticsearch数据,并还原elasticsearch本身提供的api。例:
PUT /_snapshot/my_backup/snapshot_1
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false
}
Run Code Online (Sandbox Code Playgroud)
这是一篇博客文章,介绍“如何进行Elasticsearch数据的备份”,如果您想观看备份和还原操作,请观看此视频教程
有几种方法可以更改 Elasticsearch 中的映射,无需停机,也无需完全重建索引。
另一种方法(官方方法)是使用scrollapibulk来将索引从一个索引重新索引到较新的索引。问题是aliases为了保持相同的“索引”名称并仍然更改其映射。这里描述的是。关键概念是为每个索引创建一个别名,并使用别名来索引数据而不是真正的索引名称。一旦您需要更改映射,您就可以使用新映射创建一个新索引,一旦所有数据都重新索引到新索引,您就可以更改别名以指向新索引。
关于保存索引,我不知道在没有映射的情况下在 Elasticsearch 中保存索引的官方方法。
无论如何,如果您希望将数据移动到另一个位置的另一个集群,然后重新索引。您可能会发现这篇关于将 Elasticsearch 数据快照到 Amazon S3 或从 Amazon S3 恢复数据的文章很有帮助。
此链接指向有关如何对其他文件系统进行快照/恢复的 Elasticsearch 文档。
希望我能帮上忙!
| 归档时间: |
|
| 查看次数: |
13507 次 |
| 最近记录: |