Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Solr-“;添加字段时出错…;msg=无效的日期字符串";向core发送json数据时_Java_Date_Solr_Logstash_Utc - Fatal编程技术网

Java Solr-“;添加字段时出错…;msg=无效的日期字符串";向core发送json数据时

Java Solr-“;添加字段时出错…;msg=无效的日期字符串";向core发送json数据时,java,date,solr,logstash,utc,Java,Date,Solr,Logstash,Utc,我是新来Solr的。 我正在尝试将日志文件传递给Solr。为此,我使用log file->Filebeat->Logstash->Solr 问题 Logstash输出正常,但Solr仍为空。 因为Logstash输出文本是“2020-01-01 00:00:00.000”,所以我尝试使用cURL来执行Solr更新,例如以下命令。 第一个命令:(字段“my_datetime”的尾部是Z) 第二个命令:(字段“my_datetime”的尾部不是Z) 问题 第一个命令确实有效。 但第二个命令

我是新来Solr的。
我正在尝试将日志文件传递给Solr。为此,我使用log file->Filebeat->Logstash->Solr



问题

Logstash输出正常,但Solr仍为空。
因为Logstash输出文本是“2020-01-01 00:00:00.000”,所以我尝试使用cURL来执行Solr更新,例如以下命令。

第一个命令:(字段“my_datetime”的尾部是Z)

第二个命令:(字段“my_datetime”的尾部不是Z)


问题

第一个命令确实有效。 但第二个命令不起作用,我收到一个异常:

    {
  "responseHeader":{
    "status":400,
    "QTime":13},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.common.SolrException"],
    "msg":"ERROR: [doc=60146d1c-ed31-4dda-b90e-e93537b8a63a] Error adding field 'my_datetime'='2020-01-01 00:00:00.000' msg=Invalid Date String:'2020-01-01 00:00:00.000'",
    "code":400}}

环境

  • 在Solr v8.3.0上测试
这是我的托管模式

<fieldType name="pdates" class="solr.DatePointField" docValues="true" multiValued="true"/>

<field name="my_datetime" type="pdate" indexed="true" stored="true"/>

这是我的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,SSS[Z</str>
        <str>yyyy-MM-dd'T'HH:mm:ss.SSS</str>
        <str>yyyy-MM-dd' '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>
        <str>yyyy-MM-dd['T'[HH:mm[:ss[.SSS]]</str>
        <str>yyyy-MM-dd['T'[HH:mm[:ss[.SSS]][z</str>
        <str>yyyy-MM-dd['T'[HH:mm[:ss[.SSS]][z</str>
        <str>yyyy-MM-dd['T'[HH:mm[:ss[,SSS]][z</str>
        <str>yyyy-MM-dd HH:mm[:ss[.SSS]][z</str>
        <str>yyyy-MM-dd HH:mm[:ss[.SSS]]</str>
        <str>yyyy-MM-dd HH:mm[:ss[,SSS]][z</str>
        <str>[EEE, ]dd MMM yyyy HH:mm[:ss] z</str>
        <str>EEEE, dd-MMM-yy HH:mm:ss z</str>
      <str>EEE MMM ppd HH:mm:ss [z ]yyyy</str>
    </arr>
  </updateProcessor>


<updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:true}"
           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'HH:MM:ss.SSSZ
yyyy-MM-dd'HH:MM:ss,SSS[Z]
yyyy-MM-dd'HH:MM:ss.SSS
yyyy-MM-dd''HH:MM:ss.SSS
yyyy-MM-dd'HH:MM:ssZ
yyyy-MM-dd'HH:MM:ss
yyyy-MM-dd'HH:mmZ
yyyy-MM-dd'HH:MM
yyyy MM dd HH:MM:ss.SSSZ
yyyy MM dd HH:MM:ss,SSSZ
yyyy MM dd HH:MM:ss.SSS
yyyy MM dd HH:MM:ss,SSS
yyyy MM dd HH:MM:ssZ
yyyy MM dd HH:MM:ss
yyyy MM dd HH:mmZ
yyyy MM dd HH:MM
每天
yyyy-MM-dd['T'[HH:MM[:ss[.SSS]]
yyyy-MM-dd['T'[HH:MM[:ss[.SSS]]
yyyy-MM-dd['T'[HH:MM[:ss[.SSS]]
yyyy-MM-dd['T'[HH:MM[:ss[,SSS]]
yyyy MM dd HH:MM[:ss[.SSS]][z
yyyy MM dd HH:MM[:ss[.SSS]]
yyyy MM dd HH:MM[:ss[,SSS]][z
[EEE,]dd-MMM-yyy-HH:mm[:ss]z
EEEE,dd MMM yy HH:mm:ss z
EEE MMM ppd HH:mm:ss[z]yyyy

谢谢您的帮助!

您应该以正确的格式传递日期值

当日期时间字符串的格式无效时,SOLR会引发此错误。SOLR仅允许日期时间字符串的格式为
YYYY-MM-DDThh:MM:ssZ

正确的格式是
2020-10-01T00:00:00Z
。它在您共享的示例中也起作用


在日志存储文件中添加适当的筛选器,以将日期更改为上述预期格式。

日期必须采用“2020-01-01T00:00:00.000Z”格式…日期应采用正确格式,如2012-05-23T09:47:23Z感谢分享您的提示!这很有效。
<fieldType name="pdates" class="solr.DatePointField" docValues="true" multiValued="true"/>

<field name="my_datetime" type="pdate" indexed="true" stored="true"/>
<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,SSS[Z</str>
        <str>yyyy-MM-dd'T'HH:mm:ss.SSS</str>
        <str>yyyy-MM-dd' '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>
        <str>yyyy-MM-dd['T'[HH:mm[:ss[.SSS]]</str>
        <str>yyyy-MM-dd['T'[HH:mm[:ss[.SSS]][z</str>
        <str>yyyy-MM-dd['T'[HH:mm[:ss[.SSS]][z</str>
        <str>yyyy-MM-dd['T'[HH:mm[:ss[,SSS]][z</str>
        <str>yyyy-MM-dd HH:mm[:ss[.SSS]][z</str>
        <str>yyyy-MM-dd HH:mm[:ss[.SSS]]</str>
        <str>yyyy-MM-dd HH:mm[:ss[,SSS]][z</str>
        <str>[EEE, ]dd MMM yyyy HH:mm[:ss] z</str>
        <str>EEEE, dd-MMM-yy HH:mm:ss z</str>
      <str>EEE MMM ppd HH:mm:ss [z ]yyyy</str>
    </arr>
  </updateProcessor>


<updateRequestProcessorChain name="add-unknown-fields-to-the-schema" default="${update.autoCreateFields:true}"
           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>