easy-es icon indicating copy to clipboard operation
easy-es copied to clipboard

Date 类型字段格式化问题

Open Suomm opened this issue 3 years ago • 8 comments

设置了日期字段类型,并且设置dateFormat=“yyyy-MM-dd HH:mm:ss”

image

插入数据报错。

org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=mapper_parsing_exception, reason=failed to parse field [operTime] of type [date] in document with id 'OX-rLYQBzWmLI-OUHflm'. Preview of field's value: '2022-10-31T10:51:39.764']
        at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:177)
        at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:1793)
        at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:1770)
        at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1527)
        at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1484)
        at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1454)
        at org.elasticsearch.client.RestHighLevelClient.index(RestHighLevelClient.java:871)
        at cn.easyes.core.conditions.BaseEsMapperImpl.insert(BaseEsMapperImpl.java:306)
        at cn.easyes.core.conditions.BaseEsMapperImpl.insert(BaseEsMapperImpl.java:294)
        ... 17 common frames omitted
        Suppressed: org.elasticsearch.client.ResponseException: method [POST], host [http://elasticsearch:9200], URI [/tutor_operlog/_doc?timeout=1m], status line [HTTP/1.1 400 Bad Request]
{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"failed to parse field [operTime] of type [date] in document with id 'OX-rLYQBzWmLI-OUHflm'. Preview of field's value: '2022-10-31T10:51:39.764'"}],"type":"mapper_parsing_exception","reason":"failed to parse field [operTime] of type [date] in document with id 'OX-rLYQBzWmLI-OUHflm'. Preview of field's value: '2022-10-31T10:51:39.764'","caused_by":{"type":"illegal_argument_exception","reason":"failed to parse date field [2022-10-31T10:51:39.764] with format [yyyy-MM-dd HH:mm:ss]","caused_by":{"type":"date_time_parse_exception","reason":"Text '2022-10-31T10:51:39.764' could not be parsed at index 10"}}},"status":400}
                at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:283)
                at org.elasticsearch.client.RestClient.performRequest(RestClient.java:261)
                at org.elasticsearch.client.RestClient.performRequest(RestClient.java:235)
                at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1514)
                ... 22 common frames omitted
Caused by: org.elasticsearch.ElasticsearchException: Elasticsearch exception [type=illegal_argument_exception, reason=failed to parse date field [2022-10-31T10:51:39.764] with format [yyyy-MM-dd HH:mm:ss]]
        at org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:496)
        at org.elasticsearch.ElasticsearchException.fromXContent(ElasticsearchException.java:407)
        at org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:437)
        at org.elasticsearch.ElasticsearchException.failureFromXContent(ElasticsearchException.java:603)
        at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:169)
        ... 25 common frames omitted
Caused by: org.elasticsearch.ElasticsearchException: Elasticsearch exception [type=date_time_parse_exception, reason=Text '2022-10-31T10:51:39.764' could not be parsed at index 10]
        at org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:496)
        at org.elasticsearch.ElasticsearchException.fromXContent(ElasticsearchException.java:407)
        at org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:437)
        ... 29 common frames omitted

Suomm avatar Oct 31 '22 11:10 Suomm

+1

ojbk-666 avatar Dec 02 '22 01:12 ojbk-666

用一下fastjson的这个 @JSONField(format = "yyyy-MM-dd HH:mm:ss")

rowstop avatar Dec 02 '22 09:12 rowstop

我也是出了这个问题

rowstop avatar Dec 02 '22 09:12 rowstop

可以修改java实体类中该字段类型为String; 或者把注解中的dateFormate改为epoch_millis

xpc1024 avatar Dec 02 '22 09:12 xpc1024

可以修改java实体类中该字段类型为String; 或者把注解中的dateFormate改为epoch_millis

字段类型不能修改,dateFormat改为epoch_millis不就不能格式化为“yyyy-MM-dd HH:mm:ss”了么?

Suomm avatar Dec 07 '22 13:12 Suomm

@JSONField(format = "yyyy-MM-dd HH:mm:ss")

是这个样子吗? image

Suomm avatar Dec 07 '22 13:12 Suomm

可以修改java实体类中该字段类型为String; 或者把注解中的dateFormate改为epoch_millis

Elasticsearch 版本 7.6.2 Easy-es 版本 1.0.1,新版的easy-es修复这个问题了吗?

Suomm avatar Dec 07 '22 13:12 Suomm

https://www.easy-es.cn/pages/4eb7db/#indexfield 升版本试试 // 场景五:支持日期字段在es索引中的format类型 @IndexField(fieldType = FieldType.DATE, dateFormat = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis") private String gmtCreate;

Meta39 avatar Feb 28 '23 09:02 Meta39