发现es api的 SearchRequestBuilder里面有一个setRouting方法,里面的解释是这样的:
A comma separated list of routing values to control the shards the search will be executed on
官方说明的搜索过程 是 请求去所有的分片(0 1 2三个分片中的主或副之一)中获取结果,最后汇总取top。
那么如果我在这里指定了routing,是不是意味着只会去路由到的分片获取数据,而不去所有的分片了?
如果是的话,也就意味着 假设如果我的索引带路由字段cityId,那么我每次查询都带着cityId作为条件,再把路由带上,其实性能会有所提高,毕竟不用去其它分片走一次了,IO次数少了; 但是如果路由指定不当,可能会查不到数据或数据少,因为有数据的分片不被遍历了。
不知道我这个理解对不对
A comma separated list of routing values to control the shards the search will be executed on
官方说明的搜索过程 是 请求去所有的分片(0 1 2三个分片中的主或副之一)中获取结果,最后汇总取top。
那么如果我在这里指定了routing,是不是意味着只会去路由到的分片获取数据,而不去所有的分片了?
如果是的话,也就意味着 假设如果我的索引带路由字段cityId,那么我每次查询都带着cityId作为条件,再把路由带上,其实性能会有所提高,毕竟不用去其它分片走一次了,IO次数少了; 但是如果路由指定不当,可能会查不到数据或数据少,因为有数据的分片不被遍历了。
不知道我这个理解对不对
1 个回复
strglee
赞同来自: