docker搭建es7.1,highlevelclient操作

springboot使用RestHighLevelClient操作es

之前博客中已经写过集成es6.3了,今天回过头来看觉得之前的太麻烦了,现在使用的是es官方的

Java High Level REST Client

具体的api可以查看下官方文档,老样子本次博文还是采用docker进行搭建

进行环境配置

安装es7.1

​ 拉取镜像

docker pull elasticsearch:7.1.0

image-20210518103045423

运行镜像

指定了最大日志文件,因为这个服务的日志文件实在太大了

docker run -d --log-opt max-size=10m -e "discovery.type=single-node" --name es -p 9200:9200 -p 9300:9300 elasticsearch:7.1.0

​ 进入容器,安装中文ik分词器

docker exec -it es /bin/bash

image-20210518103645359

ik分词器地址https://github.com/medcl/elasticsearch-analysis-ik/,自己下载对应版本,下面的命令太长了,复制到一行执行

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.1.0/elasticsearch-analysis-ik-7.1.0.zip

添加密码认证(可选)

还是在容器中进行操作,在/usr/share/elasticsearch/config中的elasticsearch.yml中添加下面的配置

image-20210518105559280

image-20210518105545191

重启es

重启后进入es,进行密码配置

elasticsearch-setup-passwords interactive

依次输入密码就行

image-20210518110026732

安装kibana7.1(可选)

拉取镜像

docker pull kibana:7.1.0

image-20210518110211364

运行镜像

docker run -d -it   --name=kibana -p 5601:5601  kibana:7.1.0

要是上一步配置了密码,就需要修改kibana的配置文件

#修改es配置文件kibana.yml
vi /usr/share/kibana/config/kibana.yml
#添加以下内容
elasticsearch.username: "elastic"
elasticsearch.password: "*****"

重启kibana

访问URL验证结果

进行springboot的集成
  1. 首先配置maven依赖,本次用的是highlevelclient

     <!--        es-->
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>elasticsearch-rest-high-level-client</artifactId>
                <version>7.1.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.elasticsearch</groupId>
                <artifactId>elasticsearch</artifactId>
                <version>7.1.0</version>
            </dependency>
    
  2. 配置es

    1. 首先在yml中进行常见配置

      elasticsearch:
        host: localhost
        port: 9200
        connTimeout: 3000
        socketTimeout: 5000
        connectionRequestTimeout: 500
      #  索引名称
        index-name: contentik
        username: elastic
        password: 123456
      
      
    2. 新建es配置类

      后续所有的操作都是通过这个client来进行的

      package com.pgy.esdemo.config;
      
      import org.apache.http.HttpHost;
      import org.apache.http.auth.AuthScope;
      import org.apache.http.auth.UsernamePasswordCredentials;
      import org.apache.http.client.CredentialsProvider;
      import org.apache.http.impl.client.BasicCredentialsProvider;
      import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
      import org.elasticsearch.client.RestClient;
      import org.elasticsearch.client.RestClientBuilder;
      import org.elasticsearch.client.RestHighLevelClient;
      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      /**
       * @Author: Kevin
       * @Description:
       * @Date: create in 2021/5/11 15:21
       */
      @Configuration
      public class ElasticsearchConfiguration {
             
          @Value("${elasticsearch.host}")
          private String host;
      
          @Value("${elasticsearch.port}")
          private int port;
      
          @Value("${elasticsearch.connTimeout}")
          private int connTimeout;
      
          @Value("${elasticsearch.socketTimeout}")
          private int socketTimeout;
      
          @Value("${elasticsearch.connectionRequestTimeout}")
          private int connectionRequestTimeout;
      
          @Value("${elasticsearch.username}")
          private String USERNAME;
      
          @Value("${elasticsearch.password}")
          private String PASSWORD;
      
      
          @Bean(destroyMethod = "close", name = "client")
          public RestHighLevelClient initRestClient() {
             
      
              //如果没配置密码就可以不用下面这两部
              final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
              credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(USERNAME, PASSWORD));
      
              RestClientBuilder builder = RestClient.builder(new HttpHost(host, port))
                      .setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder
                              .setConnectTimeout(connTimeout)
                              .setSocketTimeout(socketTimeout)
                              .setConnectionRequestTimeout(connectionRequestTimeout))
                  //没有密码可以不用这一个set
                      .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
             
                          @Override
                          public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
             
                              httpClientBuilder.disableAuthCaching();
                              return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                          }
                      });
      
              return new RestHighLevelClient(builder);
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值