ElasticsearchはJAVA日付データのインポートを解決します

数日前、JAVAを使ってesにデータをインポートする練習をし、日付データの扱い方を考えました。次に、オンラインで検索したところ、es日付タイプをJAVAを使用してインポートすると、8時間の時差があることがわかりました。具体的な理由については、https://blog.csdn.net/linkedin_38160998/article/details/68951075またはBaiduアクセスしてください。

インターネットにはたくさんの解決策がありますが、私はそれを自分で書く必要があると思います。

1つ目:タイムスタンプを使用して時間を記録します。

データを保存するときは、Stringを使用して日付に変換してからlongに変換します(ここでは、フォーマット変換を容易にするためにStringを使用しています)。

public final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str="2016-01-25 00:00:00";
Date date=dateFormat.parse(str);
Long dateLong=date.getTime();

データを取得したら、longを使用して日付に変換し、次に文字列に変換します。

DateFormat dateFormatdateFormat=new SimpleDateFormat();
long dateLong=1453651200000L;
Date date=new Date(dateLong);
String dateStr=dateFormat.format(date);
System.out.print(dateStr);

2番目のタイプ:文字列を直接使用してesに保存する

Date time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2016-7-21 00:00:00");
IndexResponse response = client.prepareIndex("database", "table")
     .setSource(XContentFactory.jsonBuilder().startObject()
         .field("number",0.8029)
         .field("time",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time))
     .endObject())
     .get();

一般に、これら2つの方法でデータを保存した後、JAVAでデータを取得してから、型変換を行う必要があります。

おすすめ

転載: blog.csdn.net/FV8023/article/details/97146077