Elasticsearch - 限制分片分配

标签 elasticsearch logstash kibana

我已经阅读了许多有关放置索引/分片的文章/论坛,但尚未找到满足我的要求的解决方案。

从根本上来说,我想使用 Logstash (+ Elasticsearch/Kibana) 构建一个全局分布式集群,但我想将主分片和副本分片的放置限制在它们创建所在区域的本地位置,以减少 WAN 流量,但我也希望能够将所有数据作为单个数据集进行查询。

示例

假设我在英国有两个 ES 节点 (uknode1/uknode2),在美国有两个 (usnode1/usnode2)。 如果 Logstash 向 usnode1 发送一些数据,我希望它将副本放置在 usnode2 上,并且通过 WAN 将其发送到 uknode* 节点。

我尝试过使用索引和路由分配设置,但无法阻止分片分布在所有 4 个节点上。由于索引名称是根据“类型”动态构建的,这有点复杂,但这是以后的另一个挑战。即使只有一个索引,我也无法做到这一点。

我可以将其拆分为两个单独的集群,但我希望能够将所有节点作为单个数据集进行查询(通过 Kibana),因此我认为现阶段这不是一个有效的选项,因为 Kibana 只能查询一个集群.

这有可能实现吗?

我问这是否可能的原因是,如果我写入英国节点上名为“myTest”的索引,以及美国节点上的相同索引......因为这最终是相同的索引,并且我不确定 ES 将如何处理这个问题。

因此,如果有人有任何建议,或者只是说“不可能”,那将非常有帮助。

最佳答案

这是 possible ,但不推荐。 Elasticsearch需要集群中节点之间可靠的数据连接才能发挥作用,这对于地理上分布式的集群来说很难保证。更好的解决方案是拥有两个集群,一个在英国,另一个在美国。如果您需要同时搜索两者,可以使用tribal node

关于Elasticsearch - 限制分片分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22931715/

相关文章:

c# - 从1.x升级后,在Nest/Elastic Search 2.x中创建索引

elasticsearch - 通过Logstash标记日志-Grok-ElasticSearch

mysql - Logstash 从 MySQL 一对多导入

mysql - Elasticsearch 与 MariaDB 的数据完整性问题

elasticsearch - Elasticsearch超过最大字段长度-Kibana中的错误

elasticsearch - 如何查找存在映射冲突的字段

elasticsearch - 使用 packetbeat 捕获 mysql 查询响应

java : Elasticsearch listing redundant values

elasticsearch - 在弹性索引名称中添加日期的原因和后果

python - 从python中的kibana查询?