yyyy-MM-dd HH:mm:ss
Elasticsearch にフォーマット内の文字列を日付フィールドとして認識させようとしています。動的な日付形式を作成し、それをデフォルトのマッピングに適用しました。最初のタイプのドキュメントにインデックスを付けると、うまく機能します。データがこの形式である新しいフィールドはすべて、日付フィールドとして初期化されます。
問題は、新しいタイプのドキュメントを作成しようとしたときに発生しますが、最初のタイプと同じ名前の日付形式フィールドがあります。これらは不正な日付エラーで失敗します。
デモ用の Kibana コマンドのセットの例を次に示します。
DELETE /datetest
PUT /datetest
PUT /datetest/_mapping/_default_
{
"dynamic_date_formats" : ["yyyy-MM-dd HH:mm:ss"]
}
PUT /datetest/doc/1
{
"date" : "2015-01-01 12:00:00"
}
# This one works fine
PUT /datetest/otherdoc/1
{
"otherdate" : "2015-01-01 12:00:00"
}
# This one does not
PUT /datetest/otherdoc/2
{
"date" : "2015-01-01 12:00:00"
}
最後のコマンドで次のエラーが発生します。
"Invalid format: \"2015-01-01 12:00:00\" is malformed at \" 12:00:00\""
異なる型の同じ名前のフィールドは同じデータ型でなければならないことはわかっていますが、この場合は同じデータ型 (日付) にする必要があります。新しいタイプごとに手動でマッピングを作成することもできますが、ソース データに追加された新しいタイプを自動的にサポートするようにしたいと考えています。動的な日付形式が行うべきことのようです。ここで何か間違ったことをしていますか?