2016-08-05 25 views
5

次のJSON入力をelasticsearchに送信しようとしていますが、パーサーエラーが発生しています。弾性検索の日付形式

このJSON入力

{ 
    "chassisNumber": "654321", 
    "position": "40.480143, -3.688960", 
    "issue": "Position", 
    "timestamp": "2016-07-15T15:29:50+02:00[Europe/Paris]" 
} 

インデックス定義

{ 
    "mappings":{ 
     "vehicle":{ 
     "properties":{ 
      "vehicle":{ 
       "type":"string" 
      }, 
      "position":{ 
       "type": "geo_point" 
      }, 
      "issue":{ 
       "type":"string" 
      }, 
      "timestamp":{ 
       "type":"date", 
       "format":"YYYY-MM-DD'T'HH:mm:ssZ" 
      } 
     } 
     } 
    } 
} 

そして、 "タイムスタンプ" フィールドに関連するエラー。

"reason": "Invalid format: \"2016-07-15T15:29:50+02:00[Europe/Paris]\" is malformed at \"[Europe/Paris]\"" 

私はいくつかの日付形式を試しましたが、どれも成功しませんでした。誰かが私にelasticsearchの "タイムスタンプ"フィールドを解析する正しいフォーマットを定義するのを助けることができますか?

ありがとうございました!

+1

'[Europe/Paris]'部分を削除する必要があります。 '+02:00'で十分であるため、不要です。 – Val

答えて

4

マッピングでわかるように、timestampのフィールドはdateタイプ(YYYY-MM-DD'T'HH:mm:ssZ)にマッピングされています。したがって、Elasticsearchはtimestampフィールドが同じ形式で渡されることを望みます。渡すデータは2016-07-15T15:29:50+02:00[Europe/Paris]で、マッピングで指定されていないゾーンデータの後に[Europe/Paris]を含み、デフォルトのISO 8601の形式(Elasticsearchでサポートされています)を超えています(詳細データはhere)。

Elasticsearch hereでサポートされているデフォルトの日付形式で詳細を読むことができます。

だから、マッピング

{ 
    "chassisNumber": "654321", 
    "position": "40.480143, -3.688960", 
    "issue": "Position", 
    "timestamp": "2016-07-15T15:29:50+02:00" 
} 

またはジョダ構文はhereを定義し、次のカスタム日付形式にマッピングを変更するに応じてそれをElasticsearchし、維持するために渡される追加データを削除する必要がありますどちらか。あなたの場合、リテラルゾーンが必要な場合は、zも使用する必要があります。