Skip to content

Instantly share code, notes, and snippets.

@joonahn
Created September 8, 2017 06:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joonahn/09f307a1ddf49772c71f2ffcd9e40801 to your computer and use it in GitHub Desktop.
Save joonahn/09f307a1ddf49772c71f2ffcd9e40801 to your computer and use it in GitHub Desktop.

ElasticSearch Java API

ElasticSearch에 쿼리할 내용을 만들고 쿼리한 뒤 결과까지 반환해 주는 Helper API입니다.

Builder 생성자

Index, StartTime, endTime 만 추가하면 알아서 indexlist string 만들어 줌

    Builder(String, Long, Long); // 범위 내 날짜 index에서 검색
    Builder(String, Long); // 지정한 날짜부터 지금까지의 index 검색
    Builder(String); // 처음부터 끝까지 모든 index 검색

JestClient 등록함수

사용하려는 클래스에 있는 Jest client를 등록해야 함

	setJestClient(JestClient) //--> search 하기 전에 반드시 등록!!

검색 타입 지정

	type(String)

텀즈쿼리

	termsQuery(String, List<String>)
	termsQuery(String, String)

범위 쿼리

대소와 등호는 함수명으로 처리

    rangeQueryGteLte(String, Number, Number)
    rangeQueryGtLte(String, Number, Number)
    rangeQueryGteLt(String, Number, Number)
    rangeQueryGtLt(String, Number, Number)
    rangeQueryLt(String, Number)
    rangeQueryLte(String, Number)
    rangeQueryGt(String, Number)
    rangeQueryGte(String, Number)

정렬

sortAsc(String)
sortDesc(String)

최대 검색 결과 갯수 지정

	size(int)

결과 필드 지정

	fetchSource(List<String>)

Aggregation

순서대로 지정하면 됨

	termsAggregation(String, String)
	termsAggregation(String, String, int)
	histogramAggregation(String, String, long)
	cardinalityAggregation(String, String)
	statsAggregation(String, String)
	sumAggregation(String, String)
	avgAggregation(String, String)
	maxAggregation(String, String)
	dateHistogramAggregationInMonth(String, String)
	dateHistogramAggregationInDays(String, String, int)
	dateHistogramAggregationInMinutes(String, String, int)
	dateHistogramAggregationInSeconds(String, String, int)

최종 검색 함수들

	search(); // JsonObject
	searchAndGetMap(); // Map
	searchByScroll(); // JsonArray

사용 예시

ElasticSearchProducergetPATxnTrendDataFromES 함수에 사용하였으며 ElasticSearchHelperTest.java 파일에도 많은 예시가 있음.

JsonObject obj = new ElasticSearchHelper.Builder("txn_end", System.currentTimeMillis())
	.rangeQueryGtLt("timestamp", System.currentTimeMillis()-3600000, System.currentTimeMillis())
	.size(1)
	.setJestClient(jestClient)
	.search();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment