假设我们有一个Elasticsearch查询,其中包含路由关键字apple、bear、peach。路由键apple和bear映射到分片1,peach映射到分片2,发送时会有两个单独的查询发送到分片1,还是会有一个合并查询发送到分片1,因为ES已经在内部做了优化?
假设发送到分片1的查询匹配doc1和doc2。主分片会收到来自分片1的doc1、doc2,还是会因为发送单独的查询而收到doc1、doc2、doc1、doc2?如果是后者,ES会过滤掉重复的文档吗?
我读了the ES docs about routing,但没有运气。
发布于 2020-10-27 15:57:18
路由功能的主要目的是减少调用所有索引分片的影响。假设您的索引在10个节点上有10个分片。在搜索索引时,您使用的是10个节点的RAM、CPU和I/O。使用此功能,您只需调用包含您的信息的分片/节点。
根据示例,假设您调用了/_search/routing=apple,bear。只有一个搜索查询将被发送到协调器节点。协调节点检查哪个数据节点在它的分片上有这个路由参数,并且只会向那个数据节点和分片1发送一个请求,所以不会有重复的请求。
假设您调用了/_search/routing=apple,peach。同上,但协调器会向分片1和分片2发送请求。同样,如果分片1和分片2中没有重复的doc,则不会有重复的响应。
https://stackoverflow.com/questions/64546619
复制相似问题