며칠 전 JAVA를 사용하여 es로 데이터를 가져 오는 연습을했고 날짜 데이터를 처리하는 방법을 생각했습니다. 온라인으로 검색 한 결과 JAVA를 사용하여 es date 유형을 가져 오면 8 시간의 시차가 있다는 것을 알게되었습니다. 구체적인 이유는 https://blog.csdn.net/linkedin_38160998/article/details/68951075 또는 Baidu를 직접 방문하십시오.
인터넷에는 많은 솔루션이 있습니다. 제가 직접 작성해야한다고 생각합니다.
첫 번째 : 타임 스탬프를 사용하여 시간을 기록합니다.
데이터를 저장할 때 문자열을 사용하여 날짜로 변환 한 다음 long으로 변환합니다 (여기서 문자열은 형식 변환을 용이하게하는 데 사용됨).
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);
두 번째 유형 : 직접 문자열을 사용하여 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();
일반적으로이 두 가지 방법으로 데이터를 저장 한 후 JAVA를 통해 데이터를 얻은 다음 형식 변환을 수행해야합니다.