如何将 Elasticsearch 数据复制到新服务器?



我在新服务器上安装了Elasticsearch。我有一个名为指标的索引,其中推送了我的应用程序中的自定义指标。我想做的是将旧服务器的指标添加到此索引中。

我尝试在旧服务器上使用弹性转储,如下所示:elasticdump --input=http://oldserver:9200/metrics --output=metrics_dump.json --type=data但是在将大约 1,000,000 个条目添加到文件中后,我收到一个错误(指标在旧服务器上有大约 10,000,000 个条目(。 所以我想使用滚动并批量保存条目:elasticdump --input=http://oldserver:9200/metrics --output=metrics_dump_1.json --type=data --searchBody='{ "sort": ["_doc"], "query": { "match_all": {} }, "size": 100000 }但这行不通。条目在 100,000 标记后不断写入文件。此外,在检查输出文件中的第一行时,我没有看到scroll_id,所以我怀疑 searchBody 参数被忽略了。

我可以移动此数据的任何(其他(方法?我不需要丢失新服务器指标中的任何新条目。

您有多种选择。如果您可以在旧服务器中停止 elasticsearch,只需停止它并复制数据目录即可。这将复制所有内容。

如果没有,则可以使用快照。创建快照并在新服务器中还原数据。您可以指定要备份和/或还原的索引。制作快照的示例:

PUT /_snapshot/my_backup/snapshot_2?wait_for_completion=true
{
"indices": "index_1,index_2",
"ignore_unavailable": true,
"include_global_state": false,
"metadata": {
"taken_by": "kimchy",
"taken_because": "backup before upgrading"
}
}

还原快照的示例(将快照文件夹复制到新服务器后(:

POST /_snapshot/my_backup/snapshot_1/_restore

除非您已经配置了任何快照文件夹,否则您必须重新配置并重新启动 elasticsearch。

第三种选择是使用远程服务器通过重新索引复制数据。

POST _reindex
{
"source": {
"remote": {
"host": "http://otherhost:9200",
"username": "user",
"password": "pass"
},
"index": "source",
"query": {
"match": {
"test": "data"
}
}
},
"dest": {
"index": "dest"
}
}

第三个选项应该无需重新启动 elasticsearch即可工作。

除了 @julodnik 发布的答案之外,复制数据的最简单方法之一是将newES 群集join旧的/现有的 ES 群集。这可以通过将新集群中elasticsearch.yml的属性配置为与现有集群相似来完成,尤其是属性主节点 (discovery.zen.ping.unicast.hosts( 和集群名称 ('cluster.name'(。这样,新集群将加入现有集群,数据将均衡。然后,您可以使用

PUT _cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : "IP_of_old_cluster"
}
}

在关闭它之前。

另一种选择是设置 logstash 以读取索引metrics并写入 ES。您需要为它配置 logstash.conf,以便它读取整个metrics索引。类似的东西

## SOURCE
input {
elasticsearch {
hosts => ["http://your_old_es_host:9200"]
user => "elastic"
password => "foopass"
index => "metrics"
scroll => "5m"
size => 5000
docinfo_fields => [ "_id" ]
query => '{"query":
{"match_all": {}
}}'
}
}
## TARGET
output {
elasticsearch {
hosts => ["http://your_new_es_host:9200"]
index => "metrics-new"
user => "elastic"
password => "foopass"
}
}

相关内容

最新更新