2016-08-05 17 views
5

Aşağıdaki JSON girdisini elasticsearch'e göndermeye çalışıyorum ancak ayrıştırıcı hatası alıyorum. Elasticsearch date format

Bu JSON giriş

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

Endeksi tanımı

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

Ve "zaman damgası" alanla ilişkili hatası.

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

Birkaç tarih biçimini denedim, ancak hiç kimse başarılı değildi. Elasticsearch'teki "timestamp" alanını ayrıştırmak için doğru formatı tanımlamama yardım eden var mı?

Teşekkürler!

+1

'[Europe/Paris]' bölümünü kaldırmanız gerekiyor, '+02: 00' olması yeterli değil. – Val

cevap

4

timestamp alanınızın, YYYY-MM-DD'T'HH:mm:ssZ biçimindeki date türünde eşleştiğini görebileceğiniz gibi. Dolayısıyla, Elasticsearch, timestamp alanının aynı biçimde geçirilmesini ister. Geçirdiğiniz veriler, numaralı 2016-07-15T15:29:50+02:00[Europe/Paris] adresinde bulunan ve haritalamada verilmeyen bölge verisinden sonra ve Elasticsearch tarafından desteklenen varsayılan ISO 8601 biçimini takip etmemektedir (daha fazla veri here).

Elasticsearch here tarafından desteklenen varsayılan tarih biçiminde daha fazla bilgi edinebilirsiniz.

Yani ya sen Elasticsearch ve tutmak haritalama

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

göre ya here tanımlanan joda sözdizimi aşağıdaki özel tarih biçimine eşleştirmesini değiştirmek geçirilen ekstra verileri kaldırmak zorundayız. Durumunuzda, sözel alan gerekli ise, z'u da kullanmalısınız.