欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂Java培訓(xùn)之基于Springboot2.0構(gòu)建ES的多客戶端

2019-04-24 13:35:34 3529瀏覽

今天扣丁學(xué)堂Java培訓(xùn)老師給大家分享一篇關(guān)于基于Springboot2.0構(gòu)建ES的多客戶端詳解,首先當(dāng)我們有時候操作es會有一些特殊的需求,例如需要操作的index使用了不同的es服務(wù)器、用戶名、密碼、參數(shù)等,這個時候我們需要使用不同的es的客戶端進(jìn)行操作,但是我們又不希望拆分成多個項目進(jìn)行使用,這個時候我們就需要在我們的配置中自己構(gòu)建一套ES的多客戶端了。



文章目錄

pom.xml

ElasticsearchConfig.java

ElasticsearchRestClient.java

最終

pom.xml

首先是我們的pom.xml:

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.0.5.RELEASE</version>
    </dependency>
     
    <!--es for transport-->
    <dependency>
      <groupId>org.elasticsearch</groupId>
      <artifactId>elasticsearch</artifactId>
      <version>5.6.11</version>
    </dependency>
 
    <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>elasticsearch-rest-client</artifactId>
      <version>5.6.11</version>
    </dependency>
 
    <!--es sniffer-->
    <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>elasticsearch-rest-client-sniffer</artifactId>
      <version>5.6.3</version>
      <scope>compile</scope>
    </dependency>
 
    <!--es for rest-high-level-client-->
    <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>elasticsearch-rest-high-level-client</artifactId>
      <version>5.6.11</version>
    </dependency>
 
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.4</version>
    </dependency>
 
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.39</version>
    </dependency>
 
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.9.1</version>
    </dependency>
 
    <!-- SpringBoot 熱啟動 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
    </dependency>
 
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.4.2</version>
    </dependency>
 
    <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>elasticsearch-rest-client-sniffer</artifactId>
      <version>5.6.0</version>
    </dependency>
 
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>
</dependencies>

ElasticsearchConfig.java

然后是我們的配置文件,我這里使用的是application.properties的配置文件,因為我們使用不同的信息,所以這里我就不寫了,可以根據(jù)需求自行獲取。

ElasticsearchRestClient.java

import cnkj.site.config.ElasticsearchConfig;
import lombok.extern.slf4j.Slf4j;
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.client.config.RequestConfig;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.sniff.SniffOnFailureListener;
import org.elasticsearch.client.sniff.Sniffer;
import org.elasticsearch.client.sniff.SnifferBuilder;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
/*
 * @version 1.0 created by LXW on 2018/11/22 9:43
 */
@Slf4j
@Configuration
public class ElasticsearchClient {
 
  @Bean(name = "HighESClient")
  public RestClient restTomcatClient(ElasticsearchConfig elasticsearchConfig) {
    final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
    credentialsProvider.setCredentials(AuthScope.ANY,
        //es賬號密碼
        new UsernamePasswordCredentials(elasticsearchConfig.getUsername(), elasticsearchConfig.getPassword()));
    //自動掃描網(wǎng)段
    //監(jiān)聽同網(wǎng)段服務(wù)
    //Low Level Client init
    RestClientBuilder builder = RestClient.builder(
        new HttpHost(
            elasticsearchConfig.getHost(),
            Integer.valueOf(elasticsearchConfig.getPort()),
            elasticsearchConfig.getSchema()
        )
    ).setHttpClientConfigCallback(
        httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)
    ).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
          @Override
          public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder builder) {
            builder.setConnectTimeout(elasticsearchConfig.getConnectTimeout());
            builder.setSocketTimeout(elasticsearchConfig.getSocketTimeout());
            return builder;
          }
        })
        .setMaxRetryTimeoutMillis(elasticsearchConfig.getMaxRetryTimeoutMillis());
    builder.setMaxRetryTimeoutMillis(elasticsearchConfig.getMaxRetryTimeoutMillis());
    SniffOnFailureListener sniffOnFailureListener = new SniffOnFailureListener();
    builder.setFailureListener(sniffOnFailureListener);
    RestClient lowLevelRestClient = builder.build();
    SnifferBuilder snifferBuilder = Sniffer.builder(lowLevelRestClient).setSniffIntervalMillis(elasticsearchConfig.getSnifferinterval());
    if (elasticsearchConfig.getFailuredelay() > 0) {
      snifferBuilder.setSniffAfterFailureDelayMillis(elasticsearchConfig.getFailuredelay());
    }
    sniffOnFailureListener.setSniffer(snifferBuilder.build());
    return lowLevelRestClient;
  }
  @Bean(name = "HighLevelESClient")
  public RestHighLevelClient restHighLevelClient(@Qualifier("HighESClient") RestClient restClient) {
    return new RestHighLevelClient(restClient);
  }
 
}

最終,在需要使用的地方直接通過注入的方式使用不同的客戶端

@Resource(name = "HighLevelESClient")
private RestHighLevelClient client;

以上關(guān)于扣丁學(xué)堂Java培訓(xùn)之基于Springboot2.0構(gòu)建ES的多客戶端的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,最后想要了解更多關(guān)于Java開發(fā)方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂Java培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的Java講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的Java視頻教程定能讓你快速掌握J(rèn)ava從入門到精通開發(fā)實戰(zhàn)技能??鄱W(xué)堂Java技術(shù)交流群:850353792。


                          


 【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】         【掃碼進(jìn)入HTML5進(jìn)階免費公開課】




查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Java培訓(xùn) Java視頻教程 Java多線程 Java面試題 Java學(xué)習(xí)視頻 Java開發(fā)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部