2012-05-04 30 views
21

Tôi đang cố gắng kết nối từ Java đến ElasticSearch nhưng tôi chỉ có thể kết nối qua HTTP. Tôi không thể sử dụng số TransportClient. Có trình bao bọc ứng dụng khách Java xung quanh API REST của ElasticSearch không? Nếu vậy, làm cách nào để sử dụng?Java HTTP Client cho ElasticSearch

Trả lời

20

Xin chào! Có một dự án hoàn toàn mới phù hợp với nhu cầu của bạn. API dựa trên Java dựa trên Java cho Elasticsearch

Kiểm tra! tên của nó JEST

+0

Tôi gặp vấn đề tương tự, tôi phải kết nối với máy chủ ES qua cổng 80. Jest trông rất đẹp, nhưng tiếc là ứng dụng mẫu Jest là cách đằng sau thư viện Jest cốt lõi. – Phy6

9

Ứng dụng java dựa trên REST "chính thức" mới will be available bắt đầu bằng v5.0.0-alpha4.

+1

Xin lỗi vì downvote, tôi chắc chắn những gì bạn đã viết hoàn toàn hợp lệ vào năm 2012, nhưng hiện có một số triển khai mã nguồn mở. –

+0

@BastianVoigt cảm ơn vì đã chú ý đến điều này. Tôi đã cập nhật câu trả lời của mình để phản ánh tình huống mới nhất. – imotov

+0

thx để cập nhật –

4

Chúng tôi chỉ mở nguồn Flummi, một ứng dụng Java HTTP/REST cho Tìm kiếm Đàn hồi. Nó bắt chước API của khách hàng vận chuyển càng chặt chẽ càng tốt, giúp bạn dễ dàng chuyển mã hiện có. Nó cũng cung cấp một mức trừu tượng tốt hơn Jest, bởi vì nó báo cáo tất cả các lỗi với Exceptions. Hãy thử một lần!

sử dụng đơn giản ví dụ:

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 của Elasticsearch Java SDK mà họ cung cấp một 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); 
Các vấn đề liên quan