我尝试在kibana开发工具的elasticsearch 5.6上运行以下查询:
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"range": {
"inserted": {
"gt": "Thu Aug 20 09:01:31 +0100 2020"
}
}
}
]
}
}
}
}
}
我得到的答复是:
{
"error": {
"root_cause": [
{
"type": "parse_exception",
"reason": "failed to parse date field [Thu Aug 20 09:01:31 +0100 2020] with format [EEE MMM dd HH:mm:ss ZZZ yyyy]"
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "can_match",
"grouped": true,
datetime格式在我看来是正确的,我做错了什么?
1条答案
按热度按时间6yjfywim1#
简而言之:“eee mmm dd hh:mm:ss z yyyy”是正确的格式。
细节:
ElasticSearch使用joda库格式化datetime。
摘自es文档
支持完全可自定义的日期格式。这些的语法在joda文档中有解释。
使用joda库,尝试使用“eee-mmm-dd-hh:mm:ss-zzz-yyyy”模式格式化datetime。编程语言是java
导致以下例外情况:
线程“main”java.lang.illegalargumentexception中的异常:无效格式:“thu aug 20 09:01:31+0100 2020”在org.joda.time.format.datetimeformatter.parsedatetime(datetimeformatter)的“+0100 2020”处格式错误。java:866)
推论:“zzz”定义的格式有问题
来自jodadoc
z时区偏移/id区域-0800
根据调查,正确的格式是“eee mmm dd hh:mm:ss z yyyy”,而不是“eee mmm dd hh:mm:ss zzz yyy”。
考虑到#3在Map中定义格式