我正在使用Solr 7.7.2
版本。我定义了一个名为date_test
的字段,其类型为tdate(TrieDateField)
,如下所示{core}/conf/schema.xml
文件中的内容
<field name="date_test" type="tdate" docValues="true" indexed="true" stored="true" required="false" multiValued="true" />
在{core}/conf/solrconfig.xml
内部,我可以看到此处定义了此日期格式,
<updateProcessor class="solr.ParseDateFieldUpdateProcessorFactory" name="parse-date">
<arr name="format">
<str>yyyy-MM-dd'T'HH:mm:ss.SSSZ</str>
<str>yyyy-MM-dd'T'HH:mm:ss,SSSZ</str>
<str>yyyy-MM-dd'T'HH:mm:ss.SSS</str>
<str>yyyy-MM-dd'T'HH:mm:ss,SSS</str>
<str>yyyy-MM-dd'T'HH:mm:ssZ</str>
<str>yyyy-MM-dd'T'HH:mm:ss</str>
<str>yyyy-MM-dd'T'HH:mmZ</str>
<str>yyyy-MM-dd'T'HH:mm</str>
<str>yyyy-MM-dd HH:mm:ss.SSSZ</str>
<str>yyyy-MM-dd HH:mm:ss,SSSZ</str>
<str>yyyy-MM-dd HH:mm:ss.SSS</str>
<str>yyyy-MM-dd HH:mm:ss,SSS</str>
<str>yyyy-MM-dd HH:mm:ssZ</str>
<str>yyyy-MM-dd HH:mm:ss</str>
<str>yyyy-MM-dd HH:mmZ</str>
<str>yyyy-MM-dd HH:mm</str>
<str>yyyy-MM-dd</str>
</arr>
</updateProcessor>
此外,我可以看到此bean在updateRequestProcessorChain
内部使用,如下所示,
<updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:false}"
processor="uuid,remove-blank,field-name-mutating,parse-boolean,parse-long,parse-double,parse-date,add-schema-fields">
<processor class="solr.LogUpdateProcessorFactory"/>
<processor class="solr.DistributedUpdateProcessorFactory"/>
<processor class="solr.RunUpdateProcessorFactory"/>
</updateRequestProcessorChain>
现在,当我尝试使用带有yyyy-MM-dd
格式的curl如下发布文档时,
curl -X POST -d '{"add":{ "doc":{"id":"delete.me1","messageid":"message.delete.me1","date_test":"2020-01-10"}}}' -H "Content-Type: application/json" http://{ip}:8983/solr/test-data/update?commit=true
这给我类似的错误
{
"responseHeader":{
"status":400,
"QTime":4},
"error":{
"metadata":[
"error-class","org.apache.solr.common.SolrException",
"root-error-class","org.apache.solr.common.SolrException"],
"msg":"ERROR: [doc=message.delete.me1] Error adding field 'date_test'='2020-01-10' msg=Invalid Date String:'2020-01-10'",
"code":400}}
我试图理解为什么即使我们在ParseDateFieldUpdateProcessorFactory
中定义了格式也不能接受这种格式
有人可以帮忙吗?预先感谢。