2016-08-05 31 views
5

Tôi đang cố gửi đầu vào JSON sau đây tới elasticsearch nhưng tôi đang gặp phải lỗi trình phân tích cú pháp.Định dạng ngày tháng Elasticsearch

này đầu vào JSON

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

Index nét

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

Và các lỗi liên quan đến lĩnh vực "dấu thời gian".

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

Tôi đã thử với một vài định dạng ngày nhưng không ai thành công. Ai có thể giúp tôi để xác định định dạng chính xác để phân tích cú pháp "dấu thời gian" lĩnh vực trong elasticsearch?

Xin cảm ơn !!!

+1

Bạn cần xóa phần '[Châu Âu/Paris]', không cần thiết vì '+02: 00' là đủ. – Val

Trả lời

4

Như bạn có thể thấy trong ánh xạ rằng trường của bạn timestamp được ánh xạ thành loại date với định dạng YYYY-MM-DD'T'HH:mm:ssZ. Vì vậy, Elasticsearch muốn trường timestamp được chuyển cùng một định dạng. Dữ liệu bạn đang truy cập là 2016-07-15T15:29:50+02:00[Europe/Paris] bao gồm [Europe/Paris] sau khi dữ liệu vùng không được đưa ra trong ánh xạ và không tuân theo định dạng mặc định ISO 8601 được Elasticsearch hỗ trợ (thêm dữ liệu có sẵn here).

Bạn có thể đọc thêm về định dạng ngày mặc định được hỗ trợ bởi Elasticsearch here.

Vì vậy, hoặc là bạn phải loại bỏ dữ liệu thêm truyền cho Elasticsearch và giữ nó theo bản đồ

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

hoặc thay đổi bản đồ của bạn sang định dạng ngày tùy chỉnh mà theo cú pháp Joda định nghĩa here. Trong trường hợp của bạn nếu đó là khu vực theo nghĩa đen, bạn phải sử dụng z.

Các vấn đề liên quan