[英]how to insert unique data in Elasticsearch index document in java
[英]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.