构建应用程序。现在我们有一台Solr服务器。但我们希望设计应用程序,以便将来可以支持多个Solr分片,如果我们超出索引需求。
在开发可支持多个分片的应用程序时,要记住哪些关键事项?
我们将solr URL / solr /存储在DB中。用于执行针对solr的查询。更新有一个URL,数据库中有一个用于搜索的URL
如果我们在将来日期将分片添加到solr环境,使用分片的过程是否会像更新数据库中的URL一样简单?或者还有其他需要更新的事情。我们正在使用SolrJ
e.g。将DB中的SolrSearchBaseURL更改为:
https://solr2/solr/select?shards=solr1/solr,solr2/solr&indent=true&q={search_query}
将DB中的SolrUpdateBaseURL更新为
https://solr2/solr/
答案 0 :(得分:1)
基本上,您所描述的内容已在SolrCloud中实现。在那里,ZooKeeper维护搜索集群的状态(在哪些集合,分片复制品,领导者和从属节点等中进行分片)。它可以通过使用散列来处理索引和查询方面的负载。
原则上,您可以使用您开发的系统(至少在群集增长开始时)。但是考虑复制,添加负载均衡器,外部缓存服务器(例如清漆):从长远来看,你最终会像SolrCloud一样实现smth。
话虽如此,使用基于散列的索引并因此进行搜索仍有一些注意事项。如果您想在此时实现数据的逻辑分区(例如,按日期),那么除了制作自定义代码之外,没有办法做到这一点。尽管如此,还是有一些工作要做。