我正在基于日期查询Elasticsearch,并以这种格式yyyy-mm-dd hh:mm:ss
传递日期和时间字符串,但是Elasticsearch和DateTime无法接受这种格式。
我正在编写一个脚本,该脚本接受输入并主要根据索引和日期时间基于这些输入来查询Elasticsearch。我已经使用命令行参数编写了脚本,并以相同的格式输入了日期时间,并且脚本可以完美运行。但是,当我尝试转换运行带有硬编码输入的脚本时,会出现错误:
错误elasticsearch.exceptions.RequestError:RequestError(400,'search_phase_execution_exception','无法解析日期字段 [2019-07-01 00:00:00]格式 [strict_date_optional_time || epoch_millis]')
#this throws the error
runQueryWithoutCommandLine("log4j-*", "2019-07-01 00:00:00", "csv", "json")
#this does not throw error
def runQueryWithCommandLine(*args):
# "yyyy-mm-dd hh:mm:ss" date-time format is given in commandline
为什么会出现此错误,如何消除该错误?谢谢!
答案 0 :(得分:0)
弹性中的Date format“ strict_date_optional_time || epoch_millis”使用ISO date format standards。
从上面的链接中可以看出,日期的字符串表示形式的ISO格式为:
date-opt-time = date-element ['T' [time-element] [offset]]
在您的情况下,时间部分由空格而不是'T'分隔,因此存在解析错误。
此外,正如我所看到的,提到的时间是00:00:00,您可以简单地忽略它,因为这是默认设置,即未指定时间部分。
因此,以下任何日期值均可使用:
1) 2019-07-01T00:00:00
2) 2019-07-01