tl;dr
Elasticsearch の日付フォーマットにおいて 1 日の時間(24 時間)を指定する場合に何も考えずに以下のように指定すると…
YYYY-MM-dd HH:mm:ss
以下のようにエラーが出てしまうことがある。これはフォーマットタイプに Date
を指定している際に時間が 01 ~ 24 なドキュメントを放り込んでしまった場合のエラーのようだ。
"error":"MapperParsingException[failed to parse [DATE_TIME]]; nested: MapperParsingException[failed to parse date field [2015-11-21 24:00:00], tried both date format [YYYY-MM-dd HH:mm:ss], and timestamp number with locale []]; nested: IllegalFieldValueException[Cannot parse "2015-11-21 24:00:00": Value 24 for hourOfDay must be in the range [0,23]]; ","status":400
これをどんな風に解決しようかと悩んでいたら以下のドキュメントに書かれてた。
ドキュメントをちゃんと読みましょう事案。
メモ
ドキュメント抜粋
こちらより抜粋。
どうやら k
を利用するらしい。
日付フォーマット(0 ~ 23)
うっかり設定してしまうフォーマット。
curl -XPUT 'localhost:9200/sample_index' -d ' { "mappings" : { "sample_type" : { "properties" : { "DATE_TIME" : { "format" : "YYYY-MM-dd HH:mm:ss","type" : "date" } } } } }'
日付フォーマット(1 ~ 24)
1 ~ 24 時を表現したい場合。
curl -XPUT 'localhost:9200/sample_index' -d ' { "mappings" : { "sample_type" : { "properties" : { "DATE_TIME" : { "format" : "YYYY-MM-dd kk:mm:ss","type" : "date" } } } } }'
以上
なるほど、なるほど。