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