2017-11-17 22 views
1

joda-timeライブラリフォーマットを使用して弾性検索で日付フィールドをフォーマットしようとしています。私は、次のコードを使用するフォーマット"Mon Sep 18 17:12:37 IST 2017" 1次回を達成したい:弾性検索のカスタム日付フォーマット

"alarm_timestamp": { 
    "type": "date", 
    "format": "EEE MMM d H:m:s zzz YYYY" 
} 

それは動作しませんでした。その後、私は質問hereを読んだ。そこで、コードを変更しました:

"alarm_timestamp": { 
    "type": "date", 
    "format": "E MMM d H:m:s z Y" 
} 

どちらの場合も、マッピングは正常に作成されました。しかし、データをインデックス化しようとするとエラーになりました。

それが与えるエラーは次のとおりです。

{ 
    "error": { 
     "root_cause": [ 
      { 
       "type": "mapper_parsing_exception", 
       "reason": "failed to parse [alarm_timestamp]" 
      } 
     ], 
     "type": "mapper_parsing_exception", 
     "reason": "failed to parse [alarm_timestamp]", 
     "caused_by": { 
      "type": "illegal_argument_exception", 
      "reason": "Invalid format: \"Mon Sep 18 17:12:37 IST 2017\" is malformed at \"IST 2017\"" 
     } 
    }, 
    "status": 400 
} 

任意の提案(s)は? formatためElasticsearch documentationから

+0

使用しているESのバージョンはどれですか? – Val

+0

@Val:私はelasticsearch-5.6.3を使用します。 – Ritwik

答えて

0

完全にカスタマイズ日付形式がサポートされています。 の構文については、Jodaのドキュメントで説明しています。 ( 'Z')に解析することができない時間帯名:

ゾーン名:

Joda docsz言います。

問題は、タイムゾーンのISTのような省略形があいまいである可能性があることです。

Wikipedia Time Zoneページには、次の言葉:

略語
タイムゾーン は、多くの場合、このような "EST"、 "WST"、および "CST" などのアルファベット略語によって表されるが、これらされています国際時間の一部ではありません。 日付標準ISO 8601と時間指定の唯一の指定子としての使用 ゾーンは避けてください。そのような指定はあいまいな場合があります。 「ECT」は、「Eastern Caribbean Time」(UTC-4h)、 「Ecuador Time」(UTC-5h)、または「European Central Time」(UTC + 1h)として解釈されます。

したがって、いくつかの略語が機能し、一部の機能では機能しないことがわかります。これらの略語を使用しないことが推奨されます。代わりに、次のいずれかを使用します。Mon Sep 18 17:12:37 Europe/Istanbul 2017

としてMon Sep 18 17:12:37 +02:00 2017

  • E MMM d H:m:s ZZZ Yやインデックスなど

    • E MMM d H:m:s Z YとインデックスをここジョダためAvailable Time Zonesのリストです。