java連接要searchguard認證的es

elasticsearch版本6.5.4

  • pom.xml文件加入依賴
        <!-- es插件 -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>3.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>5.6.14</version>
        </dependency>
        <!--SearchGurageSSL認證-->
        <dependency>
            <groupId>com.floragunn</groupId>
            <artifactId>search-guard-ssl</artifactId>
            <version>5.6.14-23</version>
        </dependency>
  • 複製根節點證書(root-ca.pem)、客戶端證書(spock.key,spock.pem)到項目resource/ssl目錄下

  • 配置類ElasticConfig.java

@Configuration
@EnableElasticsearchRepositories(basePackages = "com.xxx.xxx.service.elasticsearch.service")
public class ElasticConfig {

    /**
     * 注入的ElasticSearch實例
     */
    @Bean(name = "esClient")
    public TransportClient getclient()throws Exception {

        Settings settings = Settings.builder()
                .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMKEY_FILEPATH, ResourceUtils.getFile("classpath:ssl/spock.key"))
                .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMCERT_FILEPATH, ResourceUtils.getFile("classpath:ssl/spock.pem"))
                .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMTRUSTEDCAS_FILEPATH, ResourceUtils.getFile("classpath:ssl/root-ca.pem"))
                .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMKEY_PASSWORD, "<密碼>")
                .put("cluster.name", "ebuy-cloud-cluster")
                .build();

        TransportClient client = new PreBuiltTransportClient(settings, SearchGuardSSLPlugin.class)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("xxx.xxx.xxx.xxx"), 9300));

        client.admin().cluster().nodesInfo(new NodesInfoRequest()).actionGet();

        return client;
    }
}

  • 測試類SearchGuardSSLTest.java
    public static void main(String[] args) throws UnknownHostException {

        Settings settings = Settings.builder()
                .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMKEY_FILEPATH, "classpath:sslspock.key")
                .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMCERT_FILEPATH, "classpath:sslspock.pem")
                .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMTRUSTEDCAS_FILEPATH, "classpath:sslroot-ca.pem")
                .put(SSLConfigConstants.SEARCHGUARD_SSL_TRANSPORT_PEMKEY_PASSWORD, "<密碼>")
                .put("cluster.name", "<es集羣名>")
                .build();

        TransportClient client = new PreBuiltTransportClient(settings, SearchGuardSSLPlugin.class)
//                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("xxx.xxx.xxx.xxx"), 9300))
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("xxx.xxx.xxx.xxx"), 9300));

        client.admin().cluster().nodesInfo(new NodesInfoRequest()).actionGet();//搜索數據

        GetResponse response = client.prepareGet("agin", "log_bet_rcd_agin_live", "171212226218993").execute().actionGet();//輸出結果   
        System.out.println(response.getSourceAsString());
        //關閉
        client.close();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章