首页 > 解决方案 > 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

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

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

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

2018-09-14 08:59:48.144 INFO (zkCallback-3-thread-4-processing-n:localhost:5100_solr) [] oassZkIndexSchemaReader 在 34 毫秒内完成刷新架构
2018-09-14 08:59:48.151 INFO (Thread-80) [] oassIndexSchema [Cloud_shard1_replica_n1] 架构名称=基本架构
2018-09-14 08:59:48.156 INFO (Thread-80) [] oassIndexSchema 加载了具有唯一 ID 字段 ID 的模式基本模式/1.6

2018-09-14 08:59:48.157 INFO (qtp947679291-17) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oasupLogUpdateProcessorFactory [Cloud_shard1_replica_n1] webapp=/solr path=/update params={wt=javabin&version=2 }{add=[5f8ecb57-2135-4c26-a9b3-6808531badd0 (1611572799756828672)]} 0 9

2018-09-14 08:59:48.160 INFO (Thread-80) [] oascCoreContainer 使用集合 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] oascSolrCore [[Cloud_shard1_replica_n1] ] 在 [/var/app/current/solr/ work/Cloud_shard1_replica_n1], dataDir=[/var/app/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] oashaSystemInfoHandler 由于“solr.dns.prevent.reverse.lookup”而无法解析本地主机的规范主机名'系统属性
2018-09-14 08:59:48.186 WARN (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oascRequestHandlers 没有注册默认请求处理程序(“/select”或“标准”)
2018-09-14 08:59:48.187 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oasuCommitTracker 硬自动提交:如果未提交 15000 毫秒;
2018-09-14 08:59:48.187 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oasuCommitTracker Soft AutoCommit:如果未提交 1000 毫秒;
2018-09-14 08:59:48.202 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oassSolrIndexSearcher 打开 [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] oasrManagedResourceStorage 使用 znodeBase 配置 ZooKeeperStorageIO:/configs/tenant
2018-09-14 08:59:48.203 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oasrManagedResourceStorage 使用 ZooKeeperStorageIO:path=/configs/tenant 在路径 _rest_managed.json 加载 null
2018-09-14 08:59:48.203 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oassZkIndexSchemaReader 在 /configs/tenant/managed-schema 上为托管模式创建 ZooKeeper 监视
2018-09-14 08:59:48.204 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oassZkIndexSchemaReader 当前模式版本 66 已经是最新的
2018-09-14 08:59:48.204 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oashReplicationHandler 提交将保留 10000 毫秒。
2018-09-14 08:59:48.204 INFO (searcherExecutor-540-thread-1-processing-n:localhost:5100_solr x:Cloud_shard1_replica_n1 s:shard1 c:Cloud r:core_node2) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oascSolrCore [Cloud_shard1_replica_n1] 注册新搜索器 Searcher@3844c2e[Cloud_shard1_replica_n1] main{ExitableDirectoryReader(UninvertingDirectoryReader(Uninverting(_0(7.2.0):C1870) Uninverting(_1(7.2.0):C4) Uninverting。 .0):C1)))}
2018-09-14 08:59:48.227 INFO (qtp947679291-15) [] oashaCollectionsHandler 调用的收集操作:list with params action=LIST&wt=javabin&version=2 和 sendToOCPQueue=true
2018-09-14 08:59:48.228 INFO (qtp947679291-15) [] oassHttpSolrCall [admin] webapp=null path=/admin/collections params={action=LIST&wt=javabin&version=2} status=0 QTime=0
2018-09-14 08:59:48.237 INFO (qtp947679291-15) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oascSRequest [Cloud_shard1_replica_n1] webapp=/solr path=/schema/fields params={wt=javabin&version =2} 状态=0 QTime=0
2018-09-14 08:59:48.252 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oasuDefaultSolrCoreState 新的 IndexWriter 已准备好使用。

2018-09-14 08:59:48.264 INFO (qtp947679291-15) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oasupLogUpdateProcessorFactory [Cloud_shard1_replica_n1] webapp=/solr path=/update params={wt=javabin&version=2 }{add=[8e209dd4-03ef-4397-8c6a-b947270af684 (1611572799877414912)]} 0 2

2018-09-14 08:59:48.269 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oassSolrIndexSearcher 打开 [Searcher@73887417[Cloud_shard1_replica_n1] main]
2018-09-14 08:59:48.270 INFO (searcherExecutor-540-thread-1-processing-n:localhost:5100_solr x:Cloud_shard1_replica_n1 s:shard1 c:Cloud r:core_node2) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oascSolrCore [Cloud_shard1_replica_n1] 注册新搜索器 Searcher@73887417[Cloud_shard1_replica_n1] main{ExitableDirectoryReader(UninvertingDirectoryReader(Uninverting(_0(7.2.0):C1870) Uninverting(_1(7.2.0):C24) Uninverting(2_7) .0):C1)))}
2018-09-14 08:59:48.270 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oascSolrCore [Cloud_shard1_replica_n1] 关闭 SolrCore org.apache.solr.core.SolrCore@2460d222
2018-09-14 08:59:48.271 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oasmSolrMetricManager 为 registry=solr.core.Cloud.shard1.replica_n1 关闭指标报告器,标签=610325026
2018-09-14 08:59:48.271 INFO (Thread-80) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oasmSolrMetricManager 为 registry=solr.collection.Cloud.shard1.leader, tag=610325026 关闭指标报告

2018-09-14 09:00:19.467 INFO (qtp947679291-18) [c:Cloud s:shard1 r:core_node2 x:Cloud_shard1_replica_n1] oascSRequest [Cloud_shard1_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} hits=1 status=0 QTime=1

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

任何建议将不胜感激。

标签: indexingsolrlucenesolrcloud

解决方案


感谢 freenode 上的#solr 人员,找出了问题所在。

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

我发现了两个可能的修复:

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

推荐阅读