2012-05-04 16 views
21

JavaからElasticSearchに接続しようとしていますが、HTTP経由でしか接続できません。 TransportClientは使用できません。 ElasticSearch REST APIのJavaクライアントラッパーはありますか?もしそうなら、私はそれをどうやって使うのですか?ElasticSearchのJava HTTPクライアント

答えて

20

こんにちは、あなたのニーズに合った新しいプロジェクトがあります。それはElasticsearchのJavaベースのRest API

それをチェックしてください!その名前JEST

+0

私は同じ問題を抱えています。ポート80を介してESサーバに接続できる必要があります。 Jestはうまく見えますが、残念なことにJestサンプルアプリケーションはJestの中核ライブラリの背後にあります。 – Phy6

9

新しい「公式の」RESTベースのJavaクライアントwill be availableは、v5.0.0-alpha4で始まります。

+1

あなたが書いたことは、2012年に完全に有効だったと思いますが、いくつかのオープンソースの実装が現在あります。 –

+0

@BastianVoigtこれを私の注意を引くことに感謝します。私は最新の状況を反映するために私の答えを更新しました。 – imotov

+0

更新のための –

4

Elastic Search用のJava HTTP/RESTクライアントFlummiをソースとしてオープンしました。これは、トランスポートクライアントのAPIを可能な限り模倣して、既存のコードを移植することを容易にします。また、Jestよりも優れた抽象度を提供します。これは、Exceptionsですべてのエラーを報告するためです。試してみる!

簡単な使用例:彼らはJava REST Clientを提供ElasticsearchのJava 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

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

// for the RestHighLevelClient 
RestHighLevelClient client = 
    new RestHighLevelClient(restClient); 
関連する問題