Solr索引文档的时间很晚



在某些情况下,当我将文档馈送到Solr进行索引时,该文档似乎没有被索引,或者只是很晚才被索引。SolrCloud 7.1.0会出现这种情况。

我的案例:
-08:59:48.157我添加了一个文档a
--08:59:48.264我添加了文档B
-09:00:19.467我执行查询,只找到文档a。

这种情况发生在自动化测试中,但不会经常重现。它在大约90%的情况下都很好(A和B都出现),而在其他10%的情况下,我没有同时得到这两份文件。

我已经将autoCommit配置为15秒(openSearcher=false),将autoSoftCommit配置为1秒(我知道这应该尽可能高,我打算稍后增加)。

我假设Solr使用它来记录自动(软)提交,我确实看到DirectUpdateHandler2"commitScheduler">线程进行日志记录,但它很少运行。添加文档A和B后,commitScheduler在日志中的第一次出现时间是9:00:25,即添加文档后近40秒。

在从索引中删除和object时,我似乎遇到了同样的问题。有时它只是没有发生,或者至少很晚了。我在日志中看到"delete",50秒后触发的查询仍然会生成已删除的对象。

当我将成功运行的日志与失败运行的日志进行比较时,我看不出有任何区别。SolrCloud日志(运行不成功):

2018-09-14 08:59:48.144 INFO(zkCallback-3-thread-4-processing-n:localhost:5100_solr)[]o.a.s.s.ZkIndexSchemaReader在34毫秒内完成刷新架构2018-09-14 08:59:48.151 INFO(Thread-80)[]o.a.s.s.IndexSchema[Cloud_shard1_replica_n1]架构名称=基本架构2018-09-14 08:59:48.156 INFO(Thread-80)[]o.a.s.s.IndexSchema加载的架构基本架构/1.6带有uniqueid字段id2018-09-14 08:59:48.157信息(qtp947679291-17)[c:云s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.u.p.LogUpdateProcessorFactory[Cloud_shardl_replica_n1]webapp=/solr path=/update-params={wt=javabin&version=2}{add=[5f8ecb57-2135-4c26-a9b3-6808531add0(1611572799756828672)]}0 92018-09-14 08:59:48.160 INFO(Thread-80)[]o.a.s.c.CoreContainer使用集合Cloud中的配置重新加载SolrCore"Cloud_shard1_replica_n1"2018-09-14 08:59:48.160 INFO(Thread-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.c.SolrCore[[Cloud_shard1_repica_n1]在[/var/app/current/solr/work/Cloud_shard1_replica_n1]打开新的SolrCore,dataDir=[/var/ap/current/solr/work/Cloud_shard1_replica _n1/data/]2018-09-14 08:59:48.181 INFO(Thread-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.h.a.SystemInfoHandler解析本地主机的规范主机名由于'solr.dns.prevent.reverse.lookup'sysprop而被阻止2018-09-14 08:59:48.186警告(线程-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.c.RequestHandlers未注册默认请求处理程序('/select'或'standard')2018-09-14 08:59:48.187 INFO(Thread-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.u.CommitTracker Hard AutoCommit:如果取消限制15000ms;2018-09-14 08:59:48.187 INFO(Thread-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.u.CommitTracker Soft AutoCommit:如果取消限制1000ms;2018-09-14 08:59:48.202信息(线程-80)[c:云s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.s.SolrIndexSearcher打开[Searcher@3844c2e[Cloud_shard1_replica_n1]main]2018-09-14 08:59:48.203 INFO(Thread-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.r.ManagedResourceStorage使用znodeBase:/configs/tenant配置ZooKeeperStorageIO2018-09-14 08:59:48.203信息(线程-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.r.ManagedResourceStorage使用ZooKeeperStorageIO:path=/configs/tenant在路径_rest_managed.json处加载null2018-09-14 08:59:48.203 INFO(Thread-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.s.ZkIndexSchemaReader正在/configs/tent/managed-schema为托管架构创建ZooKeeper监视2018-09-14 08:59:48.204信息(线程-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.s.ZkIndexSchemaReader当前架构版本66已经是最新版本2018-09-14 08:59:48.204 INFO(Thread-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.h.ReplicationHandler Commits将保留10000ms。2018-09-14 08:59:48.204信息(searcherExecutor-540-thread-1-processing-n:localhost:5100-solr x:Cloud_shard1_replica_n1 s:shard1 c:Cloud r:core_node2Searcher@3844c2e[Cloud_shard1_replica_n1]main{ExitableDirectoryReader2018-09-14 08:59:48.227 INFO(qtp947679291-15)[]o.a.s.h.a.CollectionHandler调用的集合操作:list with params Action=list&wt=javabin&version=2 and sendToOCPQueue=true2018-09-14 08:59:48.228信息(qtp947679291-15)[]o.a.s.s.HttpSolrCall[admin]webapp=null路径=/admin/collections params={action=LIST&wt=javabin&version=2}状态=0时间=02018-09-14 08:59:48.237信息(qtp947679291-15)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.c.s.Request[Cloud_shardl_replica_n1]webapp=/solr path=/schema/fields params={wt=javabin&version=2}status=0 QTime=02018-09-14 08:59:48.252信息(线程-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.u.DefaultSolrCoreState新IndexWriter已准备就绪。2018-09-14 08:59:48.264信息(qtp947679291-15)[c:云s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.u.p.LogUpdateProcessorFactory[Cloud_shardl_replica_n1]webapp=/solr path=/update-params={wt=javabin&version=2}{add=[8e209dd4-03ef-4397-8c6a-b947270af684(161157279987741491912)]}0 22018-09-14 08:59:48.269信息(线程-80)[c:云s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.s.SolrIndexSearcher打开[Searcher@73887417[Cloud_shardl_replica_n1]main]2018-09-14 08:59:48.270信息(searcherExecutor-540-thread-1-processing-n:localhost:5100_solr x:Cloud_shard1_replica_n1 s:shard1 c:Cloud r:core_node2)[Cloud s:shard1 r:core_node 2 x:Cloud_shard1_replica _n1]o.a.s.c.SolrCore[Cloud_shardl_replica_n1]注册了新的搜索者searcher@73887417[Cloud_shard1_replica_n1]main{ExitableDirectoryReader(Uninverting(_0(7.2.0):C1870)单转换(_1(7.2.0):C4)单转换2018-09-14 08:59:48.270信息(线程-80)[c:云s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.c.SolrCore[Cloud_shardl_replica_n1]CLOSING SolrCore org.apache.solr.core.SolrCore@2460d2222018-09-14 08:59:48.271信息(线程-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.m.SolrMetricManager关闭注册表的度量报告程序=solr.core.Cloud.shard1.replica_n1,tag=6103250262018-09-14 08:59:48.271 INFO(Thread-80)[c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.m.SolrMetricManager关闭注册表的度量报告程序=solr.collection.Cloud.shard1.leader,tag=6103250262018-09-14 09:00:19.467信息(qtp947679291-18)[c:云s:shard1 r:core_node2 x:Cloud_shard1_replica_n1]o.a.s.c.s.Request[Cloud_shardl_replica_n1]webapp=/solr path=/query params={q=*&df=_text_&qt=/query&_stateVer_=Cloud:4&fl=id,_displayName&start=0&sort=_displayName]asc&fq=(MY-fq)&rows=1000&wt=javabin&version=2}点击数=1状态=0 QTime=1

似乎只有第一次测试偶尔会失败。此测试在SolrCloud启动后立即执行。我还没有看到后来的测试失败。

如有任何建议,我们将不胜感激。

多亏了freenode上的#solr家伙,才发现了问题所在。

问题是,我们更新了Solr模式,然后立即向Solr提供了新的文档。Solr在更新架构后显然需要短暂休息,或者配置的自动提交无法正常工作(我被告知这可能是Solr的错误,但我不确定)。也就是说,触发了自动提交,但在某些情况下没有提交第二个文档,而是只提交第一个文档。只有在另一次提交(手动或添加另一个文档)之后,第二个文档才真正提交。

我发现了两种可能的修复方法:

  • 正在删除架构更新
  • 更新架构后重新加载集合

相关内容

最新更新