docker容器内elasticsearch安装

                                           一、elasticsearch 安装

docker 启动ES: docker run -d --name es2 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" f29a1ee41030

docker 安装中文分词器

docker exec -it es  /bin/bash

elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip

重启容器

docker restart es

                                            二、elasticsearch7 设置xpack账号密码---整合springboot

1、进入容器&打开文件

   docker exec -it es /bin/bash或 docker exec -it es bash  

    cd config

    vi elasticsearch.yml

  2、编辑文件

      http.cors.enabled: true

      http.cors.allow-origin: "*"

      http.cors.allow-headers: Authorization

      xpack.security.enabled: true

      xpack.security.transport.ssl.enabled: true

      记得重启 es

  3、设置密码   

     cd bin

        elasticsearch-setup-passwords interactive

   4、退出&重启

      exit

      docker restart es

5、进入kibana容器中&打开文件

   docker exec -it kibana /bin/bash

   cd config

   vi kibana.yml

配置:

server.name: kibana

server.host: "0.0.0.0"

elasticsearch.hosts: [ "http://{IpAddress}:9200" ]

monitoring.ui.container.elasticsearch.enabled: true

elasticsearch.username: "elastic"

elasticsearch.password: "password"

i18n.locale: "zh-CN"

查看es容器的ip地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' es

 

参考博客:https://www.cnblogs.com/lwc1st/p/14060309.html

 

                三、elasticsearch第一次访问ES服务器超时

                     elasticsearch 放置一段时间后 报30,000 milliseconds timeout on connection http-ou tgoing-2 [ACTIVE]

              长时间停止ES访问后,与es服务器建立的HTTP连接死掉,需要重新建立连接

  builder.setHttpClientConfigCallback(httpClientBuilder -> {

        httpClientBuilder.setMaxConnTotal(MAX_CONN_TOTAL);

        httpClientBuilder.setMaxConnPerRoute(MAX_CONN_PER_ROUTE);

        httpClientBuilder.setKeepAliveStrategy((response, context) ->        Duration.ofMinutes(5).toMillis());

        httpClientBuilder.disableAuthCaching();

        httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);

        return httpClientBuilder;

    });

         增加:
            httpClientBuilder.setKeepAliveStrategy((response, context) -> Duration.ofMinutes(5).toMillis());
            配置,保持client 每 5分钟 发送数据保持http存活

 

       或者

 

@Configuration

public class ElasticSearchConfig {

 

    @Value("${spring.elasticsearch.cluster-nodes}")

    private String hostname;

 

    @Value("${spring.elasticsearch.cluster-port}")

    private int port;

 

    @Value("${spring.elasticsearch.username}")

    private String userName;

 

    @Value("${spring.elasticsearch.password}")

    private String password;

 

//  @Bean

//  public RestHighLevelClient restHighLevelClient() {

//      RestHighLevelClient client = new RestHighLevelClient(

//              RestClient.builder(new HttpHost("47.113.206.200", 9200, "http")));

//      return client;

//  }

 

    @Bean

    public RestHighLevelClient restHighLevelClient() {

        /* 用户认证对象 */

        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();

        /* 设置账号密码 */

        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));

        /* 创建rest client对象 */

        RestClientBuilder builder = RestClient.builder(new HttpHost(hostname, port))

                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {

                    @Override

                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {

                        // elasticsearch第一次访问ES服务器超时,保持client 每 5分钟 发送数据保持http存活

                        httpAsyncClientBuilder

                                .setKeepAliveStrategy((response, context) -> Duration.ofMinutes(5).toMillis());

                        return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);

                    }

                });

        RestHighLevelClient client = new RestHighLevelClient(builder);

        return client;

    }

}

 

                         四、elasticsearch中max_result_window有上限限制

    PUT index/_settings

        {

        "index":{

         "max_result_window":100000000

            }

        }

 

                         Elasticsearch 查询10000条限制与totalhits值最大10000的解决

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder().trackTotalHits(true);

相关资料

https://www.jianshu.com/p/de838a665eec

 

 

上一篇:java使用json的jar


下一篇:elasticsearch - java - 高级篇 - 封装类 - 3