문서 ( http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-date-format.html ) 에 따르면 Joda 시간 호환 날짜 패턴을 사용하여 날짜를 구문 분석 할 수 있어야합니다.
내 데이터에는 "2015-02-09 02 : 10 : 05,245"와 같은 날짜가 포함되어 있습니다.
"yyyy-MM-dd HH : mm : ss, SSS"패턴을 사용하여 Joda 시간으로 구문 분석 할 수 있습니다.
그러나 인덱스에이 패턴을 사용하여 날짜를 구문 분석하도록 지시하면 다음 오류와 함께 데이터를 Elasticsearch로로드하는 데 실패합니다.
org.elasticsearch.index.mapper.MapperParsingException: failed to parse [mydate]
at org.elasticsearch.index.mapper.core.AbstractFieldMapper.parse(AbstractFieldMapper.java:416)
at org.elasticsearch.index.mapper.object.ObjectMapper.serializeValue(ObjectMapper.java:709)
at org.elasticsearch.index.mapper.object.ObjectMapper.parse(ObjectMapper.java:500)
at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:542)
at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:491)
at org.elasticsearch.index.shard.service.InternalIndexShard.prepareCreate(InternalIndexShard.java:392)
at org.elasticsearch.action.bulk.TransportShardBulkAction.shardIndexOperation(TransportShardBulkAction.java:444)
at org.elasticsearch.action.bulk.TransportShardBulkAction.shardOperationOnPrimary(TransportShardBulkAction.java:150)
at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction.performOnPrimary(TransportShardReplicationOperationAction.java:512)
at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction$1.run(TransportShardReplicationOperationAction.java:419)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.elasticsearch.index.mapper.MapperParsingException: failed to parse date field [2015-02-09 02:10:05,245], tried both date format [dateOptionalTime], and timestamp number with locale []
at org.elasticsearch.index.mapper.core.DateFieldMapper.parseStringValue(DateFieldMapper.java:621)
at org.elasticsearch.index.mapper.core.DateFieldMapper.innerParseCreateField(DateFieldMapper.java:549)
at org.elasticsearch.index.mapper.core.NumberFieldMapper.parseCreateField(NumberFieldMapper.java:235)
at org.elasticsearch.index.mapper.core.AbstractFieldMapper.parse(AbstractFieldMapper.java:406)
... 12 more
Caused by: java.lang.IllegalArgumentException: Invalid format: "2015-02-09 02:10:05,245" is malformed at " 02:10:05,245"
at org.elasticsearch.common.joda.time.format.DateTimeFormatter.parseMillis(DateTimeFormatter.java:754)
at org.elasticsearch.index.mapper.core.DateFieldMapper.parseStringValue(DateFieldMapper.java:615)
... 15 more
색인 템플릿에서 'mydate'는 다음과 같이 지정됩니다.
{
"template": "te*",
"mappings": {
"_default_" : {
"properties": {
"mydate": {
"index": "analyzed",
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss,SSS"
}
}
}
}
}
그래야 하죠?
이것은 ES 1.4.4에서 나를 위해 작동합니다.
PUT hilden1
PUT hilden1/type1/_mapping
{
"properties": {
"dt": {"type": "date", "format": "yyyy-MM-dd HH:mm:ss,SSS"}
}
}
POST hilden1/type1
{
"dt": "2015-02-09 02:10:05,245"
}
GET hilden1/type1/_search
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다