2012-05-04 17 views
21

Próbuję połączyć się z Java do ElasticSearch, ale mogę połączyć się przez HTTP. Nie mogę użyć TransportClient. Czy istnieje opakowanie klienta Java wokół interfejsów REST API ElasticSearch? Jeśli tak, jak z niego korzystać?Klient HTTP HTTP dla ElasticSearch

Odpowiedz

20

Witam Jest zupełnie nowy projekt, który odpowiada Twoim potrzebom. To interfejs API oparty na języku Java dla Elasticsearch

Sprawdź to! jego nazwa: JEST

+0

Mam ten sam problem, muszę być w stanie połączyć się z serwerem ES tylko przez port 80. Jest ładnie wyglądający, ale niestety aplikacja "Jest przykład" znajduje się daleko za biblioteką "Jest". – Phy6

9

Nowy "oficjalny" klient java oparty na technologii REST will be available, począwszy od wersji 5.0.0-alpha4.

+1

Przepraszam za przegraną, jestem pewien, że to, co napisałeś, było całkowicie poprawne w 2012 roku, ale jest teraz kilka implementacji open source. –

+0

@BastianVoigt dzięki za zwrócenie na to uwagi. Zaktualizowałem swoją odpowiedź, aby odzwierciedlić ostatnią sytuację. – imotov

+0

thx za aktualizację –

4

Po prostu otwieramy źródło: Flummi, klienta HTTP HTTP/REST dla Elastic Search. Imituje API klienta transportu tak blisko, jak to możliwe, co ułatwia przeniesienie istniejącego kodu. Zapewnia także lepszy poziom abstrakcji niż Jest, ponieważ raportuje wszystkie błędy z wyjątkami. Spróbuj!

Prosty przykład użycia:

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 z Elasticsearch Java SDK one zapewnić 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); 
Powiązane problemy