Logstash と Bunyan を使用して ElasticSearch に Restify リクエストを記録しています。ただし、ロギングに JSON 本体を含めると、同じ名前のフィールドが異なるタイプになる場合があるため、インデックスが競合します。
1 つの例は、req.body が文字列である場合とオブジェクトである場合です。body を常にオブジェクトに設定することで、これを回避しました (restify API は有効なリクエストの文字列を受け取ることを想定していないため)。
ただし、body オブジェクトのフィールドで問題が発生し続けます。クライアントが何を送信するかを実際に制御することはできません。リクエストに数値が必要な文字列が含まれている場合、elasticsearch インデックスはそのフィールドに数値を入力しています。
本文に投稿されたすべてのフィールドをチェックして潜在的に置き換える以外に、これを継続的に修正する方法はありますか? 本体をログに記録する前にオブジェクトから文字列に変換することはできますが、可視化を行うときに Kibana での使いやすさが大幅に低下します。