23

Probably a very easy (and dumb) question to other elasticsearch devs, what's the difference between these two?

I'm connecting to a remote elasticsearch server from a Java webapp, so far I have been using TransportClient but I was wondering if NodeBuilder can be used to, or NodeBuilder should be used just for embedded clients?

If any of the two can be used to connect to remote ES servers, which one should be better in terms of memory and performance?

If anyone can point me out to a NodeBuilder connecting to a remote ES server example would be great because I haven't had any lucky finding one.

Thanks.

4

3 に答える 3

30

NodeBuilder を使用してクラスターに接続することもできます。

Node node = nodeBuilder().clusterName("yourcluster").client(true).node();
Client client = node.client();

別のノードとしてクラスタに参加し、トポロジ全体を認識します。ノードを使用すると、マルチキャストを使用して他の実行中のノードを検出できます。

私の意見では、TransportClient が停止したときに他のクラスター ノードが役に立たない情報を受信しないためTransportClient、使用することを好みます。NodeClientNodeClient が停止すると、データを保持していないため、ノードを管理する必要がなくても、各ノードはそのことを認識している必要があります。また、NodeClient がThreadsTransportCLient よりも多く起動することをデバッグ モードで確認しました。したがって、TransportClient のメモリ使用量は少ないと思います。

ちなみに、Spring を使用している場合は、spring-elasticsearchファクトリを使用できます。そうでない場合は、いつでもソース コードを見て、私が NodeClient と TransportClient をどのように管理しているかを確認できます。

お役に立てれば。

EDIT 2016-03-09 :NodeClient使用しないでください。その必要がある場合は、クライアント ノードを作成し ( and で Elasticsearch ノードを起動node.data: false) node.master: false、 を使用TransportClientしてローカルに接続する必要があります。

于 2013-03-14T08:47:33.677 に答える
0

また、ノード クライアントがフル メッシュ クラスタに参加し、プロキシにもなるため、他のクライアントもそれに接続し、プラグイン サイトをサーバー化できることも知っておく必要があります。これは、クラスタをロックダウンする際に考慮すべきことです。

ノード クライアントを使用してスキャッター ギャザーを実行できるため、データ ノードからの処理を軽減できます。

トランスポート クライアントがスキャッター ギャザーも行うかどうかは不明です。

于 2014-08-28T13:25:26.210 に答える