【发布时间】:2018-11-14 06:59:45
【问题描述】:
token_range 在将查询分发到节点时如何在 Elassandra 中决定?
跨 Elassandra 节点复制数据时会发生什么?
如何过滤重复结果?
【问题讨论】:
标签: elasticsearch-5 cassandra-3.0 elassandra
token_range 在将查询分发到节点时如何在 Elassandra 中决定?
跨 Elassandra 节点复制数据时会发生什么?
如何过滤重复结果?
【问题讨论】:
标签: elasticsearch-5 cassandra-3.0 elassandra
我的理解是,查询以类似于 Cassandra 其他方式的方式在集群中传播。
数据复制不是 Elasticsearch 方面的问题。他们创建自己的表来创建搜索信息,这些表通过标准 Cassandra 机制进行复制。如果您了解 Cassandra 复制的工作原理,那么 Elasticsearch 数据也会做同样的事情。
过滤的发生是因为每个搜索节点都有一个不重叠的令牌范围来处理。换句话说,要求一个节点返回 1、2、3 的结果,下一个节点返回 4、5、6 的结果,第三个节点返回 7、8、9 的结果。因此不会有重叠和没有进行实际过滤。
【讨论】:
Elassandra 根据目标索引的search_strategy_class 将查询分发到节点。有两种策略:PrimaryFirstSearchStrategy(默认)和RandomSearchStrategy。
每个节点都参与查询,并负责将其拥有的文档作为主节点返回。当一个节点宕机时,将使用下一个副本作为替代。
当 RF > 1 时,只有一部分节点可以到达完整的环。随机搜索策略利用了这一点,通过随机选择这样一个节点子集来提高搜索效率。
两种策略都根据上述行为向每个子查询添加token_range 过滤器。因此,过滤发生在本地,而不是在协调节点中。
【讨论】: