我想要在不同的物理位置进行 elasticsearch 数据备份。一开始我尝试将所有elasticsearch节点放在同一个集群中,但是当程序查询或更新elasticsearch时,大数据会在互联网上传输。会造成大量的网络流量费用,并且存在网络延迟。
有没有什么简单的方法可以在两个 elasticsearch 集群之间同步数据?这样我只能在互联网上同步更改的数据。
PS:我不太关心数据同步延迟,小于 1 分钟是可以接受的
小智 5
如果您正在运行最新版本的 Elasticsearch(5.0 或 5.2+),您需要拥有或添加date字段updatedAt或类似名称,然后在目标集群端cron每 1 分钟运行一次,这将运行如下Reindex API查询:
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"
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处获取有关 Reindex API 的更多信息 - https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html
如果您使用的是较旧的 Elasticsearch (<5.0),那么您可以使用工具elasticdump( https://github.com/taskrabbit/elasticsearch-dump ) 使用与updatedAt字段类似的方法传输数据。
| 归档时间: |
|
| 查看次数: |
8847 次 |
| 最近记录: |