Elasticsearch无法索引长自定义日期格式

时间:2015-02-20 10:04:10

标签: elasticsearch

对于时间戳,我使用的ISO格式包含区域ID,定义为:

yyyy-MM-dd'T'HH:mm:ss.SSS'Z['z']'

此格式例如匹配这两个时间戳:

2015-02-20T09:46:56.336Z[UTC]
2015-02-20T10:46:55.221+01:00[Europe/Berlin]

为了将数据索引到elasticsearch,我还在这样的映射中定义了这种日期格式(使用elastic4s DSL):

create index indexName mappings {
  "/exampleType" as (
    "exampleField" typed DateType
  ) dynamicDateFormats "yyyy-MM-dd'T'HH:mm:ss.SSS'Z['z']'"
}

基本上这个映射按预期工作,但是由于区域ID,格式化日期字符串变得太长时遇到问题。 E. g。上面的例子

2015-02-20T09:46:56.336Z[UTC]

有30个字符可以正常工作,而

2015-02-20T10:46:55.221+01:00[Europe/Berlin]

有44个字符无法索引并出现以下错误:

...
Caused by: java.io.IOException: Cannot read numeric data larger than 32 chars
 at org.elasticsearch.index.analysis.NumericTokenizer.incrementToken(NumericTokenizer.java:78) ~[elasticsearch-1.4.2.jar:na]
 at org.apache.lucene.index.DefaultIndexingChain$PerField.invert(DefaultIndexingChain.java:618) ~[lucene-core-4.10.2.jar:4.10.2 1634293 - mike - 2014-10-26 05:51:56]
 at org.apache.lucene.index.DefaultIndexingChain.processField(DefaultIndexingChain.java:359) ~[lucene-core-4.10.2.jar:4.10.2 1634293 - mike - 2014-10-26 05:51:56]
 ...

我的问题是,是否有办法解决这个问题e。 G。通过配置或我被迫更改我的日期格式,以确保格式化日期不超过32个字符。

0 个答案:

没有答案