solr定制文档hash

我们知道,solr在添加文档建索引的时候,通过文档id来进行hash到具体哪一个shard上去,从而实现一个Collection上的数据平衡性。

但是这也有个弊端就是我们在做查询的时候,需要到每个shard并行查询,然后再将总结果返回,这一定程度上降低了性能。

solr支持一个特性就是我们可以通过特殊标记文档id,将这类文档都建立在特定的shard上,然后查询的时候只需要设置下一个参数

就可以支持直接到这个shard查询,从而提高了建索引的速度和查询速度。(带来的弊端就是一个Collection上的几个shard上的文档数量可能不均衡

注意:这里的路由到特定的shard,但是没办法路由的具体的shard的,这个和直接路由的区别在此。

方法:就是文档id以 !分隔,前面可以为指定一个标示,后面为原来的文档id即可,如solr!doc123.

solr利用了!前面的16个bit做hash,又用了后面的16个bit做hash最终文档ID的hash是将两者组合起来。

查询:

由于你指定了文档的hash,那么在查询的时候如果需要快速查询则也需要特殊设置,方法就是查询时候添加参数:_route_=solr! 即可以直接查询到原来特定的shard上。

如果需要设置多个,可以用,号分隔。比如:_route_=solr!,squid!

用处:

1、对于一些速率要求高的,日志量又不大的,又必须和其他日志混在一个collection中存储的文档,可以通过这种方式来指定。

猜你喜欢

转载自jlk.iteye.com/blog/2390331