代码之家  ›  专栏  ›  技术社区  ›  hackjutsu Jan Galinski

映射到同一碎片的Elasticsearch路由键的行为

  •  0
  • hackjutsu Jan Galinski  · 技术社区  · 4 年前

    假设我们有一个带有路由键[苹果、熊、桃子]的Elasticsearch查询。路由密钥 apple bear peach 被映射到碎片2。发送时,会有两个单独的查询发送到shard 1,还是会有一个单一的合并查询发送到shard 1,因为ES在内部进行了优化?

    假设发送到shard 1的查询与doc1和doc2匹配。主分片是否会从分片1接收[doc1,doc2],或[doc1,doc2,doc1,doc2],因为会发送单独的查询?如果是后者,ES会过滤掉重复的文档吗?

    我读 the ES docs about routing 但是没有运气。

    0 回复  |  直到 4 年前
        1
  •  1
  •   hamid bayat    4 年前

    路由特性的主要目的是减少调用所有索引碎片的影响。假设在10个节点上有10个碎片的索引。当您搜索索引时,您使用的是RAM、CPU和10节点的I/O。使用此功能,您只能调用包含您的信息的shard/node。

    /_search/routing=apple,bear . 只有一个搜索查询将发送到协调器节点。协调器节点检查哪个数据节点的分片上有此路由参数,然后只向该数据节点和分片1发送一个请求。所以不会有重复的。

    假设你打电话 /_search/routing=apple,peach . 这与上面相同,但协调器将向碎片1和碎片2发送请求。同样,如果切分1和切分2中没有重复的文档,则不会有重复的响应。