在将查询分发到节点时,如何在Elassandra中确定token_range
?
跨Elassandra节点复制数据时会发生什么?
如何过滤重复的结果?
答案 0 :(得分:0)
我的理解是,查询以类似于Cassandra的方式遍历集群。
对于Elasticsearch而言,数据复制不是问题。他们创建自己的表以创建其搜索信息,并且这些表通过标准Cassandra机制进行复制。如果您了解Cassandra复制的工作原理,那么Elasticsearch数据将执行相同的操作。
过滤之所以发生,是因为每个搜索节点都获得了一个不重叠的令牌范围来处理。换句话说,一个节点被要求返回结果为1,2,3,用于结果的下一个节点4,5,6,和第三节点结果7,8,9,因此不会有重叠和没有实际的过滤。
答案 1 :(得分:0)
Elassandra根据目标索引的search_strategy_class
将查询分发到节点。有两种策略:PrimaryFirstSearchStrategy
(默认设置)和RandomSearchStrategy
。
每个节点都包含在查询中,并负责返回它作为主节点拥有的文档。当节点关闭时,下一个副本将用作替代副本。
当RF> 1时,仅节点的一个子集即可达到完整环。随机搜索策略通过随机选择这样的节点子集来利用这一点,以提高搜索效率。
两种策略均根据上述行为向每个子查询添加token_range
过滤器。因此,过滤是在本地进行的,而不是在协调器节点中进行的。