2012-05-04 3 views
21

Java에서 ElasticSearch로 연결하려고하지만 HTTP를 통해서만 연결할 수 있습니다. TransportClient을 사용할 수 없습니다. ElasticSearch REST API를 둘러싼 Java 클라이언트 래퍼가 있습니까? 그렇다면 어떻게 사용합니까?ElasticSearch 용 Java HTTP 클라이언트

답변

20

안녕 여러분의 필요에 맞는 새로운 프로젝트가 있습니다. 그것은 Java 기반 Rest API for Elasticsearch

그것을 확인하십시오! 그 이름 JEST

+0

동일한 문제가 있으며 포트 80을 통해서만 ES 서버에 연결할 수 있어야합니다. Jest는 멋지지만, Jest 샘플 애플리케이션은 Jest 라이브러리의 핵심이다. – Phy6

9

v5.0.0-alpha4로 시작하는 새로운 "공식"REST 기반 Java 클라이언트 will be available.

+1

죄송합니다. 당신이 작성한 내용이 2012 년에 완벽하게 유효하다고 확신하지만, 현재 몇 가지 오픈 소스 구현이 있습니다. –

+0

@BastianVoigt이 사실을 알려 줘서 고맙습니다. 최근 상황을 반영하여 답변을 업데이트했습니다. – imotov

+0

업데이트 용 –

4

우리는 Elastic Search 용 Java HTTP/REST 클라이언트 인 Flummi을 오픈합니다. 전송 클라이언트의 API를 최대한 모방하여 기존 코드를 쉽게 이식 할 수 있도록합니다. Jest보다 뛰어난 추상화 레벨을 제공하기 때문에 Exception과 함께 모든 오류를보고합니다. 시도 해봐!

간단한 사용 예 : Elasticsearch 자바 SDK의

Flummi flummi = new Flummi("http://elasticsearch.base.url:9200"); 

SearchResponse searchResponse = flummi 
    .prepareSearch("products") 
    .setQuery(
     QueryBuilders.termQuery("color", "yellow").build() 
    ) 
    .execute(); 

System.out.println("Found " 
    + searchResponse.getHits().getTotalHits() 
    + " products"); 
searchResponse.getHits() 
    .stream().map(hit -> hit.getSource().get("name").getAsString()) 
    .forEach(name -> System.out.println("Name: " + name)); 
1

Since version 5.6는 그들은 Java REST Client을 제공합니다.

RestClient restClient = RestClient.builder(
    new HttpHost("localhost", 9200, "http"), 
    new HttpHost("localhost", 9201, "http")).build(); 

// for the RestHighLevelClient 
RestHighLevelClient client = 
    new RestHighLevelClient(restClient); 
관련 문제