본문 바로가기

개발자를 벗어나긴 글렀다./Spring boot

Spring boot + Elastic Search



1. Dependency 추가

  - build.gradle

compile("org.springframework.data:spring-data-elasticsearch")


2. Properties 추가

  - application.yml

spring:
data:
rest.base-path: /api/elastic # Context PATH
elasticsearch:
cluster-name: es # Elasticsearch cluster name.
cluster-nodes: xx.xx.xx.xx:9300 # Comma-separated list of cluster node addresses.
repositories.enabled: true # Whether to enable Elasticsearch repositories.


3. java-api로 해당부분 개발

  - 예시 

@Autowired
private ElasticsearchTemplate elasticsearchTemplate;

public List<Map> getTestList(List<Map> activeEventNotifyRequests){

BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();

TermsQueryBuilder termsUidFilter = QueryBuilders.termsQuery("data", "1234");
boolQuery.filter(termsUidFilter);

NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQuery)
.withIndices("test-index")
.withTypes("doc").withSort(SortBuilders.fieldSort("@timestamp").order(SortOrder.DESC));

SearchQuery searchQuery = nativeSearchQueryBuilder.build();

NMXEsUtil.printLogQuery(searchQuery, this.notifyIndex);

List<Map> resultList = Lists.newArrayList();
Page<Map> returnList = elasticsearchTemplate.queryForPage(searchQuery, Map.class);
resultList.addAll(returnList.getContent());

for(Map<String,Map> map:resultList) {
System.out.println(map);
}

return resultList;

}


  - api doc : https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html

  - elastic java api에 대해선 향후에 elastic 분류에 재작성하도록하겠습니다.