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は、慣れていないと入手が困難な場合があります。時間の経過とともに改善されると思います。
オブジェクトをElasticSearchクラスターに送信するには、オブジェクトをJsonに変換する必要があります。 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 フロントエンドもお勧めします。既存のインデックスとアイテムが表示されます。