indexing - 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 后立即执行。我还没有看到后来的测试失败。
任何建议将不胜感激。
解决方案
感谢 freenode 上的#solr 人员,找出了问题所在。
问题是我们更新了 Solr 模式,然后就为 Solr 提供了新文档。Solr 在更新架构或配置的自动提交后显然需要短暂休息(我被告知这可能是 Solr 错误,但我不确定)。也就是说,触发了自动提交,但在某些情况下没有提交第二个文档,而只提交了第一个。只有在另一个提交(手动或通过添加另一个文档)之后,第二个文档才真正被提交。
我发现了两个可能的修复:
- 删除架构更新。
- 更新架构后重新加载集合。
推荐阅读
- java - 错误:“未提供名称属性”- 用于 log4j2.properties 自定义
- r - 重叠散点图、线穿过散点图和密度图
- wcf - 在本地使用证书测试 WCF 服务
- sql-server - 是否可以从 CSV 文件同时生成 FMT 和表格?
- ios - 如何在不使用官方 SDK 的情况下将图像/视频分享到 Facebook 和 Twitter?
- python - 文件阅读器的问题
- java - JUnit 断言错误预期和实际显示相同的东西
- java - Spring Security - 区分错误的用户名/密码组合和未经授权的用户
- android - 在具有透明背景的片段上呈现片段
- maven - 我可以将 test 的设置分离到另一个 pom 文件中吗