NodeBuilder也可用於連接到羣集。
Node node = nodeBuilder().clusterName("yourcluster").client(true).node();
Client client = node.client();
它將加入羣集作爲另一個節點,並將知道整個拓撲。使用節點,您可以使用多播來發現其他正在運行的節點。
我的意見是,我傾向於使用TransportClient
而不是NodeClient
,因爲當TransportClient停止時,其他羣集節點不會收到無用的信息。當一個NodeClient停止時,每個節點必須知道即使它們不需要管理它,因爲它不包含任何數據。 另外,我在調試模式下看到NodeClient比TransportCLient啓動更多Threads
。所以我認爲TransportClient具有較小的內存佔用。
順便說一下,如果您使用的是Spring,那麼您可以使用spring-elasticsearch工廠。如果沒有,您可以始終查看源代碼以瞭解我如何管理NodeClient與TransportClient。
希望這會有所幫助。
編輯2016-03-09:NodeClient
不應該使用。如果需要的話,人們應該創建一個客戶端節點(使用node.data: false
和node.master: false
啓動elasticsearch節點),並使用TransportClient
在本地連接它。
看看這裏:http://blog.trifork.com/2012/09/13/elasticsearch-beyond-big-data-running-elasticsearch-embedded/並在[elasticsearch文檔】(HTTP:/ /www.elasticsearch.org/guide/reference/java-api/client.html),其中的區別很好解釋。 – javanna 2013-03-14 10:45:20