【问题标题】:How to sync data between elasticsearch clusters?elasticsearch集群之间如何同步数据?
【发布时间】:2017-02-15 00:45:18
【问题描述】:

我想在不同的物理位置备份弹性搜索数据。 我一开始尝试将所有elasticsearch节点放在同一个集群中,但是当程序查询或更新elasticsearch时,大数据会在互联网上传输。会造成网络流量的一大笔钱,还有网络延迟。

有没有什么简单的方法可以在两个 elasticsearch 集群之间同步数据?这样我就只能在互联网上同步更改的数据。

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

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    如果您运行的是最新版本的 Elasticsearch(5.0 或 5.2+),您需要拥有或添加 date 字段 updatedAt 或类似名称,然后在目标集群端每 1 分钟运行一次 cron它将像这样运行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"
      }
    }
    

    您可以在此处获取有关 Reindex API 的更多信息 - https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html

    如果您使用的是旧版 Elasticsearch (elasticdump (https://github.com/taskrabbit/elasticsearch-dump) 使用与 updatedAt 字段类似的方法传输数据。

    【讨论】:

    • 这到底是怎么工作的?它应该只索引每分钟的增量数据吗?如果远端的索引在“now-5h”得到一个数据点怎么办?这会同步到新集群吗?
    • 这看起来不像是 Reindex Api 的正确 URL - elastic.co/guide/en/elasticsearch/reference/current/…
    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多