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