2012-05-04 10 views
21

Estoy intentando conectarme de Java a ElasticSearch pero solo puedo conectarme a través de HTTP. No puedo usar el TransportClient. ¿Hay un envoltorio de cliente Java alrededor de las API REST de ElasticSearch? Si es así, ¿cómo lo uso?Cliente HTTP de Java para ElasticSearch

Respuesta

20

Hola Hay un nuevo proyecto que se adapta a sus necesidades. Está basado en Java Rest API para Elasticsearch

¡Échale un vistazo! su nombre JEST

+0

Tengo el mismo problema, tengo que ser capaz de conectarme a un servidor ES solo a través del puerto 80. Jest se ve bien, pero lamentablemente la aplicación de muestra Jest está muy por detrás de la biblioteca central de Jest. – Phy6

9

Un nuevo cliente java "oficial" basado en REST will be available comenzando con v5.0.0-alpha4.

+1

Disculpe las ventajas, estoy seguro de que lo que escribió fue perfectamente válido en 2012, pero ahora hay varias implementaciones de código abierto. –

+0

@BastianVoigt gracias por traer esto a mi atención. He actualizado mi respuesta para reflejar la situación más reciente. – imotov

+0

thx para actualizar –

4

Acabamos de abrir el origen Flummi, un cliente HTTP/REST de Java para Elastic Search. Imita la API del cliente de transporte lo más cerca posible, lo que facilita el acceso al código existente. También proporciona un nivel de abstracción mejor que Jest, porque informa todos los errores con Excepciones. ¡Darle una oportunidad!

ejemplo de uso simple:

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 del Elasticsearch SDK Java que proporciona una 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); 
Cuestiones relacionadas