2016-05-25 7 views
1

RabbitMQからログイベントを取得するLogstashでELKスタックを実行しています。キューに書き込んでいる複数のロガーがあり、それらはすべて同様のスキーマでJSONを書きますが、そのうちの1つはIntとして特定のフィールドに送信し、他のユーザーはStringとして送信します。ElasticSearch - スキーマ内のフィールドタイプの不一致

インデックスを取得する最初のメッセージに文字列が含まれていれば、すべて正常に動作しますが、最初のメッセージにintが含まれている場合、インデックスのフィールドタイプはIntになり、索引付けする

事前に使用するスキーマを定義する方法はありますか?または、番号Stringに番号を送信するようにIntロガーを変更するのが最善の解決策ですか?

答えて

3

この特定のフィールドのマッピングを定義する必要があります。そうでなければ、最初の発生からelasticsearchを推測します。

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

も参照してください。 https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping.htmlhttps://www.elastic.co/guide/en/elasticsearch/guide/current/mapping-intro.html

はあなたがインデックスしようとする動的マッピングを使用する前に、Elasticsearch見たことがない新しいフィールド-1を含むドキュメントは、フィールドタイプを推測するときJSONで利用できる基本データ型から