티스토리 뷰
반응형
elasticsearch 의 연결가능성만 체크하고 싶은데, "Java High Level REST" 의 의존성은 너무 많기도 하고 번거로움이 많아서 RESTAPI 를 직접 사용해서 연결가능성만 체크하는 로직을 만들어 보았다. 구글링해보면 이거저거 나오긴 하는데 user, password 처리하는 샘플은 잘 나오지 않아서 좀 헤맸던거 같다.
RestTemplate 로 직접 health 체크 요청하기
ElasticSearch는 대부분 restapi 를 제공하고 있고, http://127.0.0.1:9300/_cat/health?v 형태로 상태를 조회가능하다.
가장 쉬운건 이 주소로 요청했을때 정상적으로 리턴이 되는지 체크하면 연결가능여부를 판단할 수 있다.
Spring 을 사용중이라면, RestTemplate 이라는 매우 좋은 도구가 있으니 이걸 이용하면 덜(?) 번거롭게 코드를 만들수 있다.
import org.springframework.http.*;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
public class SampleCode {
public boolean esCheck(String baseUrl, String user, String password) {
final SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(1000);
factory.setReadTimeout(5000);
final RestTemplate template = new RestTemplate(factory);
final HttpHeaders headers = new HttpHeaders();
if (user!=null && password!=null) {
headers.setBasicAuth(user, password);
}
try {
ResponseEntity<String> result = template.exchange(baseUrl + "/_cat/health?v",
HttpMethod.GET, new HttpEntity(null, headers), String.class);
return result.getStatusCode() == HttpStatus.OK;
} catch (Exception e) {
return false;
}
}
}
물론 인덱스의 데이터를 조회하거나 좀더 다양한 코드를 개발해야 한다면, 랩핑된 API 를 써야겠지만... 나처럼 몇개만 쓴다면 기냥 RESTAPI 를 직접 호출해서 사용하는게 더 편할수도 있다.
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html
반응형
'데이터처리 > ElasticSearch' 카테고리의 다른 글
[ES] ElasticSearch 인덱스 조회, 삭제, 생성 예제 - curl 사용 (0) | 2021.11.03 |
---|
댓글