シナリオ
基本的にインデックス付きドキュメントのテンプレートとして使用される単純な POJO があります。この POJO には、タイプ java.util.Date のフィールド createdTimestamp が含まれています。
ES クラスターとの通信に TransportClient を使用しています。同じクライアント オブジェクトがインデックスを作成し、Bean を Elasticsearch ドキュメントとしてインデックス付けしています。POJO は最初に json に変換され、次に client.prepareIndex() メソッドに渡されます
インデックスの分析には Kibana を使用します。
問題 :
json には「2017 年 3 月 20 日 4:39:39 PM」のように createdTimestamp が含まれていますが、インデックスが作成されるとすぐに EPOC time(long number) に変換されます。これは、キバナでのタイムスタンプ ベースの分析には適していません。
Logstash インデックスの @timestamp フィールドと同じように使用できるように、ES にインデックスを付ける前に POJO でフィールドを構成する方法が必要です。
Elasticsearch ライブラリでクラス TimestampFieldMapper に出くわしましたが、それを使用する方法が見つかりませんでした。
ES 5.2.2 、キバナ 5.2.2 、トランスポート クライアント 5.2.2 の使用