我试图从Solr获取一些元数据(文档计数和最后修改日期),并找到了/solr/<core>/admin/luke
端点来完成此操作。
然而,我的请求有时会返回空值而不是值。我可以通过SolrJ和curl重新生成它:
/solr/core_name/管理员/luke -s| jq '.index.上次修改时间'
“2019年6月4日星期一上午19:59:45.617”
/solr/core_name/管理员/luke -s| jq '.index.上次修改时间'
零值
如果没有jq
,则结果为:
{
"responseHeader":{
"status":0,
"QTime":2},
"index":{
"numDocs":11,
"maxDoc":11,
"deletedDocs":0,
"indexHeapUsageBytes":-1,
"version":6,
"segmentCount":1,
"current":true,
"hasDeletions":false,
"directory":"org.apache.lucene.store.NRTCachingDirectory:NRTCachingDirectory(MMapDirectory@ ... lockFactory=org.apache.lucene.store.NativeFSLockFactory@2846d2cf; maxCacheMB=48.0 maxMergeSizeMB=4.0)",
"segmentsFile":"segments_1",
"segmentsFileSizeInBytes":-1,
"userData":{
"commitTimeMSec":"1559730066881",
"commitCommandVer":"1635495514608762880"},
"lastModified":"2019-06-05T10:21:06.881Z"},
"fields":{ .... },
"info":{ .... }
}
或:
{
"responseHeader":{
"status":0,
"QTime":2},
"index":{
"numDocs":11,
"maxDoc":11,
"deletedDocs":0,
"indexHeapUsageBytes":-1,
"version":4,
"segmentCount":1,
"current":false,
"hasDeletions":false,
"directory":"org.apache.lucene.store.NRTCachingDirectory:NRTCachingDirectory(MMapDirectory@ .... lockFactory=org.apache.lucene.store.NativeFSLockFactory@1e10c435; maxCacheMB=48.0 maxMergeSizeMB=4.0)",
"segmentsFile":"segments_1",
"segmentsFileSizeInBytes":-1,
"userData":{}},
"fields":{ .... },
"info":{ .... }
}
我省略了index.directory
、fields
和info
的一部分。区别在于version
、current
、userData
和lastModified
,其他的看起来都一样。
我在云模式下使用Solr 7.5。我的集合在多个碎片上,副本数为2(或更多)。我尝试在请求中添加?numTerms=50
,但没有帮助。
我能做些什么来确保总是收到正确的答复吗?
1条答案
按热度按时间oxf4rvwz1#
.index.lastModified
是由Luke请求处理程序从.index.userData.commitTimeMSec
计算出来的。这就是为什么最后三位数总是相同的原因。如果你的内核还没有任何提交,
.index.userData
是空的,Luke不会把.index.lastModified
添加到响应中,这就是你在第二个请求中看到的。来自LukeRequestHandler.java: