2011-11-16 16 views
15

私はelasticsearchを初めて使用しており、Java APIを使用して少し助けを求めています。私はいくつかのドメインオブジェクトを持っています elasticsearchオブジェクトをインデックスに挿入

@XmlRootElement 

public class BasicActivity { 

private String activityName; 
private FullActivity activity; 
// Getters and setters 
} 

私はそこにノード

Client client = new TransportClient() 
     .addTransportAddress(new InetSocketTransportAddress("192.168.0.198",9300)); 

に接続されているトランスポート・クライアントをされています作成し、まっすぐelasticsearchに私のオブジェクトを挿入する簡単な方法がありますか?

私が見てきたこの

IndexResponse response = client.prepareIndex("twitter", "tweet", "1") 
        .setSource(jsonBuilder() 
           .startObject() 
            .field("user", "kimchy") 
            .field("postDate", new Date()) 
            .field("message", "trying out Elastic  Search") 
           .endObject() 
          ) 
        .execute() 
        .actionGet(); 

しかし、私は可能ではあるが、私の理想的な状況ではありませんJSONにすべてのオブジェクトを変換しなければならないことができません。

私はそれがどのように(構造的に)うまくいくのか誤解している場合は教えてください。

歓声、 ロブ

答えて

26

私はあなたが正しい軌道に乗っていると思います。あなたがそれに慣れていない時にJava APIを入手するのは難しいかもしれません。私は時間が経つにつれてそれが良くなると思う。

オブジェクトをJsonに変換してElasticSearchクラスタに送信する必要があります。 Gsonは、あなたのためにそれを行うことができる多くの人気のあるライブラリの1つです。

上記のコードは、インデックスを作成します。ドキュメントをそのインデックスに追加するには、次のように実行します。

Tweet tweet = new Tweet(); 
    tweet.setId("1234"); 
    tweet.setMessage("message"); 

    IndexRequest indexRequest = new IndexRequest("twitter","tweet", tweet.getId()); 
    indexRequest.source(new Gson().toJson(tweet)); 
    IndexResponse response = client.index(indexRequest).actionGet(); 

一度に複数の項目のインデックスを作成するためにBulkRequestをチェックしてください。オブジェクトが複雑になると、Mappingsを作成する必要があります。

Guideでは素晴らしい例が見つかりましたが、通常はES Google Groupではより詳細な例が見つかりました。

フロントエンドHeadもお勧めします。既存のインデックスとアイテムを表示します。

+0

本当にありがとう、本当にありがとうございました – Rob

+6

ジャクソンは別のJsonライブラリですが、パフォーマンス面ではGsonとよく似ています。 http://jackson.codehaus.org/Tutorials – Andy

関連する問題