2016-05-25 6 views
1

Ich habe einen ELK-Stapel, der mit Logstash läuft, der Log-Ereignisse von RabbitMQ zieht. Es gibt eine Reihe von Loggern, die in die Warteschlange schreiben, und obwohl sie alle JSON mit einem ähnlichen Schema schreiben, sendet einer von ihnen ein bestimmtes Feld als Int, während die anderen es als String senden.ElasticSearch - nicht übereinstimmende Feldtypen im Schema

Wenn die erste Nachricht, die indiziert werden soll, eine Zeichenfolge enthält, funktioniert alles einwandfrei, aber wenn die erste Nachricht ein int enthält, dann ist der Feldtyp im Index Int und Dokumente, wo es eine Zeichenfolge fehlschlägt indexieren.

Gibt es eine Möglichkeit, das Schema zu definieren, das ES im Voraus verwenden sollte? Oder ist die beste Lösung, um den Int Logger zu ändern, um die Nummer als String zu senden?

Antwort

3

sollten Sie ein Mapping für dieses spezielle Feld definieren, sonst "vermutet" elasticsearch es vom ersten Moment an.

"name": { 
    "type": "string" 
} 

siehe auch: https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping.html und https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping-intro.html

Wenn Sie Index ein Dokument, das einen neuen Feld-on enthält bisher nicht gesehene Elasticsearch wird dynamische Zuordnung verwenden, um zu versuchen den Feldtyp erraten aus den grundlegenden Datentypen, die in JSON

verfügbar sind
Verwandte Themen