查询Elasticsearch以解析格式的日期字段

时间:2019-02-13 02:41:16

标签: python datetime elasticsearch

我正在基于日期查询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

为什么会出现此错误,如何消除该错误?谢谢!

1 个答案:

答案 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