2017-02-14 36 views
0

我想弹性搜索数据备份在不同的物理位置。 我曾试图把所有elasticsearch节点到同一个群集中在第一,但在程序查询或更新elasticsearch,大数据将传输互联网上。这对网络流量会造成很大的损失,并且会导致网络延迟。如何在elasticsearch集群之间同步数据?

是否有任何简单的方法来同步两个elasticsearch集群之间的数据?所以我只能在互联网上同步更改的数据。

PS: 我不关心数据同步延迟,不到1分钟是可以接受的

回答

2

如果您运行的是最新版本的Elasticsearch(5.0或5.2+),你需要有情况或添加dateupdatedAt或类似的名称,然后在目的地集群端运行cron每1分钟将运行Reindex API查询是这样的:在重新编制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" 
    } 
} 

的更多信息,你可以在这里 - https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html

如果您使用的是较旧的Elasticsearch(< 5.0),则可以使用工具elasticdumphttps://github.com/taskrabbit/elasticsearch-dump)以updatedAt字段使用类似方法传输数据。