簡體   English   中英

elasticsearch將對象插入索引

[英]elasticsearch insert objects into index

我是elasticsearch的新手,並且正在尋找使用Java API的一些幫助。 我有一些域對象例如

@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,盡管這可能不是我理想的情況。

如果我對它的工作方式(架構上)有誤解,請告訴我,我在這里學習!

歡呼,羅布

我認為你走在正確的軌道上。 當您不習慣Java API時,很難獲得Java API。 我想隨着時間的推移它會變得更好。

您必須將對象轉換為Json才能將它們發送到ElasticSearch集群。 Gson是眾多受歡迎的圖書館之一,可以為您做到這一點。

您在上面顯示的代碼將創建一個索引。 現在要向該索引添加文檔,運行類似這樣的操作。

   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一次索引多個項目。 一旦您的對象變得更復雜,您將需要創建映射

我在“ 指南”中找到了很好的例子,但通常在ES Google Group中有更詳細的例子。

我也要推薦Head前端。 它顯示了現有的索引和項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM