弹性搜索架构

Elasticsearch architecture

有没有办法让多个ES集群互相同步? ES 文档不鼓励集群跨越多个数据中心。因此,为了避免我在每个数据中心拥有不同的 ES 集群。我还需要在每个集群中索引相同的数据。

实现这一点的一种方法是将每个文档发送到每个集群。但是发出 'n' 写入请求似乎是不必要的。此外,如果某些写入请求失败,集群可能会不同步。

有没有办法让一个集群"subscribe"改变另一个集群?还是将写入发送到主集群(以离数据源最近的集群为准)并让它最终复制到其他集群?

编辑:我读过部落节点。文档说它只适用于读取并且有一些限制。那会让我这样做吗?

您可以在数据中心 ID [1] 上设置自定义 routing/allocation 策略。这将确保分片的一个副本进入每个数据中心。例子

cluster.routing.allocation.awareness.force.dc.values: dc1,dc2
cluster.routing.allocation.awareness.attributes: dc

[1] https://www.elastic.co/guide/en/elasticsearch/reference/1.6/modules-cluster.html