java操作需要用户名密码验证的elasticsearch

最近有项目用到Elasticsearch,一开始不需要用户名密码验证,操作起来倒挺简单,后来加了密码验证便不知如何操作了.在网上找了许多资料,发现大多不好用,最后找呀找呀还是被我找到了,就在这里记录下吧.

引入相关maven依赖

<dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>5.6.6</version>
</dependency>
<dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>6.2.3</version>
</dependency>

创建带用户名密码的ES客户端对象

//初始化ES操作客户端
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials("elastic", "123456"));  //es账号密码(默认用户名为elastic)
        RestHighLevelClient esClient =new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1",9200)
                ).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        httpClientBuilder.disableAuthCaching();
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                })/*.setMaxRetryTimeoutMillis(2000)*/
        );

这里生成的esClient对象就可以用于es的相关操作了,下面给出一个Demo代码

public class ESTest {
    private static  RestHighLevelClient esClient = null;
    static {
        //初始化ES操作客户端
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,
                new UsernamePasswordCredentials("elastic", "123456"));  //es账号密码
        esClient =new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1",9200)
                ).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                        httpClientBuilder.disableAuthCaching();
                        return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                })/*.setMaxRetryTimeoutMillis(2000)*/
        );
    }
    public static void main(String[] args) throws Exception{
        index();
    }

    static void  index() throws Exception{
        GetRequest getRequest = new GetRequest("test","testType","100");
        GetResponse response = esClient.get(getRequest);
        System.out.println(response.getId());
    }
}

具体操作方式可以查找Java High Level REST Client对ES操作的相关文档。

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
要在Spring Boot中集成带有用户名密码Elasticsearch 6.3.2版本,你可以按照以下步骤进行操作: 1. 首先,将Elasticsearch 6.3.2版本的依赖项添加到你的Spring Boot项目的pom.xml文件中: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> ``` 2. 在application.properties(或application.yml)文件中配置Elasticsearch连接属性和身份验证信息。示例配置如下: ```properties spring.data.elasticsearch.cluster-nodes=localhost:9300 spring.data.elasticsearch.cluster-name=my-cluster spring.data.elasticsearch.properties.transport.tcp.port=9300 spring.data.elasticsearch.properties.transport.tcp.compress=true spring.data.elasticsearch.properties.transport.tcp.connect_timeout=5s spring.data.elasticsearch.properties.transport.tcp.socket_timeout=5s spring.data.elasticsearch.properties.transport.tcp.keep_alive=true spring.data.elasticsearch.properties.transport.tcp.no_delay=true spring.data.elasticsearch.properties.transport.tcp.send_buffer_size=1mb spring.data.elasticsearch.properties.transport.tcp.receive_buffer_size=1mb spring.data.elasticsearch.properties.transport.tcp.keep_alive_interval=30s # 身份验证相关配置 spring.data.elasticsearch.properties.transport.tcp.username=my-username spring.data.elasticsearch.properties.transport.tcp.password=my-password ``` 3. 创建一个Elasticsearch配置类,用于创建Elasticsearch客户端的bean,并设置身份验证信息。示例代码如下: ```java import org.apache.http.HttpHost; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; @Configuration @EnableElasticsearchRepositories(basePackages = "com.example.repository") public class ElasticsearchConfig extends AbstractElasticsearchConfiguration { @Value("${spring.data.elasticsearch.cluster-nodes}") private String clusterNodes; @Value("${spring.data.elasticsearch.cluster-name}") private String clusterName; @Value("${spring.data.elasticsearch.properties.transport.tcp.username}") private String username; @Value("${spring.data.elasticsearch.properties.transport.tcp.password}") private String password; @Override public RestHighLevelClient elasticsearchClient() { final ClientConfiguration clientConfiguration = ClientConfiguration.builder() .connectedTo(clusterNodes) .withBasicAuth(username, password) .build(); return RestClients.create(clientConfiguration).rest(); } } ``` 在上面的示例中,我们使用了`RestHighLevelClient`来创建一个Elasticsearch客户端,并设置了身份验证信息。 4. 创建一个Elasticsearch存储库接口,用于定义与Elasticsearch的交互操作。示例代码如下: ```java import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Repository; @Repository public interface MyElasticsearchRepository extends ElasticsearchRepository<YourEntity, String> { // 自定义查询方法 } ``` 请将`YourEntity`替换为你的实体类。 现在,你已经完成了Spring Boot与带有用户名密码Elasticsearch 6.3.2版本的集成。你可以使用自动注入的Elasticsearch存储库接口来执行与Elasticsearch的数据交互操作
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值