我想在不同的物理位置进行elasticsearch数据备份。 我试图首先将所有elasticsearch节点放入同一个集群,但是当程序查询或更新elasticsearch时,大数据将在Internet上传输。它将为网络流量带来大量资金,并且存在网络延迟。
有两种简单的方法可以在两个弹性搜索集群之间同步数据吗?所以我只能在互联网上同步更改的数据。
PS: 我不太关心数据同步延迟,不到1分钟是可以接受的
答案 0 :(得分:2)
如果您运行的是最新版本的Elasticsearch(5.0或5.2+),则需要拥有或添加date
字段updatedAt
或类似名称,然后在目标群集端运行{{ 1}}每1分钟将运行cron
这样的查询:
Reindex API
有关Reindex API的更多信息,请访问此处 - https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html
如果您使用较旧的Elasticsearch(< 5.0),则可以使用工具POST _reindex
{
"source": {
"remote": {
"host": "http://sourcehost:9200",
"username": "user",
"password": "pass"
},
"index": "source",
"query": {
"range": {
"updatedAt": {
"gte": "2015-01-01 00:00:00"
}
}
},
"dest": {
"index": "dest"
}
}
(https://github.com/taskrabbit/elasticsearch-dump)使用elasticdump
字段的类似方法传输数据。