запрос Elasticsearch для поля разбора даты с форматом - PullRequest
0 голосов
/ 13 февраля 2019

Я запрашиваю Elasticsearch на основе даты, передавая строку даты и времени в этом формате yyyy-mm-dd hh:mm:ss, но Elasticsearch и DateTime не могут принять этот формат.

Я пишу скрипт, который принимает вводи запрашивает Elasticsearch на основе этих входных данных, главным образом по индексу и дате-времени.Я написал сценарий, используя аргументы командной строки, введя дату и время в том же формате, и сценарий работает отлично.Однако, когда я пытаюсь преобразовать скрипт, работающий с жестко закодированными входами, появляется ошибка:

errorasticsearch.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 голосов
/ 13 февраля 2019

Формат даты"strict_date_optional_time || epoch_millis" в упругой использует Стандарты формата даты ISO .

Как видно из ссылки выше, формат ISOдля строкового представления даты это:

date-opt-time     = date-element ['T' [time-element] [offset]]

В вашем случае часть времени отделяется пробелом, а не 'T', и, следовательно, ошибкой синтаксического анализа.

Кроме того, какЯ вижу, что упомянутое время 00:00:00, вы можете просто пропустить это, так как это то, что используется по умолчанию, если не указана временная часть.

Итак, любое из значений даты ниже будет работать:

1) 2019-07-01T00:00:00
2) 2019-07-01
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...