Solr不一致的结果计数

时间:2015-10-09 01:42:15

标签: solr lucene

我有四个节点solrcloud setup version 4.10,我的集合有4个分片,2个副本。我的应用程序提供了实时数据摄取的搜索功能,数据摄取和搜索过程都是并行运行。

每天数据加载大约2~3MM记录(插入/更新操作),文档总数为80MM +。

我们面临的问题是solr在数据摄取的高峰时间内返回非常不一致的记录计数。

示例查询:

for i in `seq 1 50`;
do
       curl 'http://localhost:8888/solr/OPTUM/select?q=*:*&wt=json&indent=true'|grep numFound|rev|cut -d'{' -f1 |rev
done

响应numfound变量显示文件计数的时间非常少,然后实际出现在solr中。

请建议我是否需要进行任何配置更改以获得一致的计数。

2 个答案:

答案 0 :(得分:1)

似乎问题与你如何查询分布式设置有关 - 你说"我的收藏有4个碎片,2个复制品和#34;跨越4个节点...您的不一致结果可能是由于您基于负载平衡算法重定向到分片 - 因此每次使用不同的分片并返回给您不同的(子集)结果集。

阅读Distributed Requests documentation here

尝试添加以下内容:

http://localhost:8983/solr/gettingstarted/select?q=*:*&shards=nodehost1:7574/solr,nodehost2:8983/solr,nodehost3:8983/solr,nodehost4:8983/solr

答案 1 :(得分:0)

我还没有找到这个问题的根本原因,但我暂时解决了这个错误 我一直在使用solrj4.x softcommit方法(UpdateRequest.setCommitWithin( commitWithinMs )),我评论并在solr端使用了所有提交策略。

    <autoCommit>
            <maxTime>15000</maxTime>
            <openSearcher>false</openSearcher>
        </autoCommit>
<autoSoftCommit>
            <maxTime>2000</maxTime>
        </autoSoftCommit>

我从solr获得了一致的结果,但我仍然不确定为什么solrj客户端提交不起作用。