0
我有一個應用程序通過使用JAVA API的傳輸客戶端連接到另一臺服務器上的彈性搜索節點。該節點已啓用屏蔽安全性,所以我使用maven來獲取屏蔽瓶。我的應用運行良好。但是,現在我正在嘗試爲我的應用程序的構建過程設置集成測試。因此,我嘗試運行本地節點來運行我的測試,而不是嘗試傳輸客戶端。但是,本地節點有關下列問題的投訴。禁用集成測試的屏蔽
- 該許可證僅在30天內有效。該文檔很好地描述瞭如何使用各種工具來完成此操作,但它並沒有說明如何通過JAVA API更新許可證。
- 我得到一個org.elasticsearch.shield.authz.AuthorizationException:action [indices:data/write/index]未經授權用戶[__es_system_user]。發生這種情況是因爲我的節點沒有配置任何用戶。文檔再一次很好地描述瞭如何將用戶添加到節點,但並未解釋如何使用JAVA API完成此操作。
這我想知道是否有可能只是禁用集成測試屏蔽。我嘗試了以下,但它沒有奏效。任何幫助表示讚賞。
nodeBuilder().local(true).settings(ImmutableSettings.builder()
.put("shield.enabled", false)).build()
很奇怪,現在工作。似乎我回答了我自己的問題。順便說一下,我使用上面的代碼創建了一個節點。有沒有辦法使用TransportClient從相同的jvm連接到此節點? – dingdong
是的,這是可能的: 'InternalNode internalNode =(InternalNode)node; TransportClient transportClient = new TransportClient(ImmutableSettings.settingsBuilder() .put(「shield.enabled」,false) .put(「node.local」,true)); TransportAddress address = internalNode.injector()。getInstance(TransportService.class).boundAddress()。publishAddress(); transportClient.addTransportAddress(address);' 基於elasticsearch的測試代碼:https://github.com/elastic/elasticsearch/blob/1.x/src/test/java/org/elasticsearch/test/InternalTestCluster.java #L854-L869 – jaymode
我無法從運行TransportClient的代碼中訪問我的內部節點。是否有一些靜態函數來檢索最後創建的主動節點? – dingdong