如何查询Solr碎片

zyfwsgd6  于 2022-09-27  发布在  Solr
关注(0)|答案(1)|浏览(190)

我已经按照this在Solr中设置了shard。根据这个主题“在两台本地服务器上测试索引切分”,我能够查询到切分并获得结果(somehose:port1/solr/select?shards=somehost:port1/solr,somehosts:port2/solr&indent=true&q=helloworld)。
在该页面中,还提到“与其要求用户显式地包含shards参数,不如将此参数配置为solrconfig.xml的RequestHandler部分中的默认参数。”。端口1上运行的solr示例的xml

<requestHandler name="/select" class="solr.SearchHandler">

      <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
        <str name="df">text</str>
       </lst>
    <lst name="shards.info">
     <lst name="localhost:port2/solr">
     <long name="numFound">1333</long>
    <float name="maxScore">1.0</float>
    <str name="shardAddress">http://localhost:port2/solr</str>
   <long name="time">686</long>
   </lst>
  <lst name="localhost:port1/solr">
   <long name="numFound">342</long>
   <float name="maxScore">1.0</float>
   <str name="shardAddress">http://localhost:port1/solr</str>
   <long name="time">602</long>
  </lst>
  </lst>

现在,我试图点击somehost:port1/solr/collection1/select?q=helloworld&wt=json&indent=true,但我没有得到想要的响应。请告诉我这里缺少什么?

rdrgkggo

rdrgkggo1#

您不能只是将响应中的内容复制到配置文件中,这两种格式完全不同。引用的事实是defaults部分中的每个条目都被添加到查询字符串中(除非已经提供了这些条目-如果要强制某个不能被覆盖的值,也有一些选项)。

<requestHandler name="/selectdistributed" class="solr.SearchHandler">
    <lst name="defaults">
        [...]
        <str name="shards">somehost:port1/solr,somehost:port2/solr</str>
    </lst>
</requestHandler>

…应该做你想做的。这将把shards=somehost:port1/solr、somehoste:port2/solr添加到经过该处理程序的所有请求的查询字符串中。

相关问题