假设我们有一个带有路由键的elasticsearch查询[apple,bear,peach]。路由密钥 apple
以及 bear
Map碎片1 peach
Map到碎片2。发送时,会有两个单独的查询发送到shard 1,还是会有一个合并的查询发送到shard 1,因为es在内部进行了优化?
假设发送到shard1的查询与doc1和doc2匹配。主shard是否会从shard 1接收[doc1,doc2],或者[doc1,doc2,doc1,doc2],因为会发送不同的查询?如果是后者,es会过滤掉重复的文档吗?
我读了关于路由的es文档,但是没有运气。
1条答案
按热度按时间zz2j4svz1#
路由特性的主要目的是减少调用所有索引碎片的影响。假设你有一个索引,在10个节点上有10个碎片。搜索索引时,使用的是ram、cpu和10节点的i/o。使用此功能,您只能调用包含您的信息的shard/节点。
举个例子,假设你打电话给
/_search/routing=apple,bear
. 只有一个搜索查询将发送到协调器节点。协调器节点检查哪个数据节点的shard上有这个route参数,并且只向该数据节点和shard 1发送一个请求。所以不会有重复的。假设你打电话来
/_search/routing=apple,peach
. 这与上面相同,但协调器将向shard 1和shard 2发送请求。同样,如果在shard1和shard2中没有重复的doc,则不会有重复的响应。