我在一台新服务器上安装了Elasticsearch。我有一个名为metrics的索引,其中推送来自我的应用程序的自定义指标。我要做的是将旧服务器中的指标添加到此索引中。
我曾尝试在旧服务器上使用弹性转储,如下所示:elasticdump --input=http://oldserver:9200/metrics --output=metrics_dump.json --type=data,但在将大约1,000,000个条目添加到文件后,我得到了一个错误(metrics在旧服务器上大约有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参数被忽略了。
有没有其他方法可以移动这些数据?我不需要丢失来自新服务器指标的任何较新条目。
发布于 2019-10-11 21:47:20
您有几个选项。如果可以在旧服务器上停止elasticsearch,只需停止它并复制数据目录即可。它将复制所有内容。
如果没有,那么您可以使用snapshots。制作快照并恢复新服务器中的数据。您可以指定要备份和/或恢复的索引。快照制作示例:
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。
第三种选择是使用远程服务器通过reindex复制数据。
POST _reindex
{
"source": {
"remote": {
"host": "http://otherhost:9200",
"username": "user",
"password": "pass"
},
"index": "source",
"query": {
"match": {
"test": "data"
}
}
},
"dest": {
"index": "dest"
}
}第三个选项不需要重启elasticsearch就可以工作。
发布于 2019-10-12 21:06:32
除了@julodnik发布的答案之外,复制数据的最简单方法之一是使您的new ES集群成为旧的/现有的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"
}
}https://stackoverflow.com/questions/58342558
复制相似问题