我有1000亿行数据,我已将其拆分为多个solr实例,每个实例都有一个单独的架构。
我需要:
我该怎么做?我是否需要编写单独的requestHandler?
例如
$ curl http://localhost:8983/solr/select?q=query1.result AND ... AND queryN.result
答案 0 :(得分:1)
您正在寻找的是分布式搜索 - > http://wiki.apache.org/solr/DistributedSearch
答案 1 :(得分:0)
我是通过solrj(例如解决方案)
完成的 File home = new File("C:\\workspace\\SolrMultipleCore\\solr");
File f = new File( home, "solr.xml" );
CoreContainer container = new CoreContainer();
container.load( "C:\\workspace\\SolrMultipleCore\\solr", f );
EmbeddedSolrServer server = new EmbeddedSolrServer( container,"core1");
EmbeddedSolrServer server1 = new EmbeddedSolrServer( container,"core2");
String query=params.getParams("q");
String query1=params.getParams("q1");
SolrQuery solrquery=new SolrQuery(query);
QueryResponse q = server.query(solrquery);
QueryResponse q1 = server1.query(solrquery);
Solr.xml
<solr persistent="true">
<property name="snapshooter" value="C:\solr1\bin\snapshooter.sh" />
<cores adminPath="/admin/cores">
<core name="core1" instanceDir="core0"/>
<core name="core2" instanceDir="core1" />
</cores>
</solr>
我仍在研究如何在solr中做到这一点。
如果有任何细节需要,请告诉我
答案 2 :(得分:0)
我认为DirectSolrConnection可以提供帮助。我和你的要求类似,我确实使用了DirectSolrConnection。
答案 3 :(得分:0)
您可以结合使用分片和过滤查询:
然后
示例:强>
你的本地'组合solr'在localhost:8983上运行,其他solrs在host1:8983上运行,host2:8983,... 您正在这些对等体上远程搜索“field1:query1”,但您想要从结果中过滤出“field2:query2”。所以你打电话:
http://localhost:8983/solr/select?shards=host1:8983/solr,host1:8983/solr&q=field1:query1&fq=field2:query2