国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ElasticSearch多數(shù)據(jù)源配置,連接多個ES集群

這篇具有很好參考價值的文章主要介紹了ElasticSearch多數(shù)據(jù)源配置,連接多個ES集群。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

開發(fā)時遇到需要連接多個ES的需求,類似于連接多個MySQL數(shù)據(jù)庫一樣。

Elasticsearch Java API有四類client連接方式

  • TransportClient
  • RestClient
  • Jest
  • Spring Data Elasticsearch


????????其中TransportClient和RestClient是Elasticsearch原生的api。TransportClient可以支持2.x,5.x版本,TransportClient將會在Elasticsearch 7.0棄用并在8.0中完成刪除,因此不推薦后續(xù)使用;而Jest由于是社區(qū)維護,所以更新有一定延遲,目前最新版對接ES6.3.1,近一個月只有四個issue,說明整體活躍度較低,因此也不推薦使用;Spring Data Elasticsearch主要是與Spring生態(tài)對接,可以在web系統(tǒng)中整合到Spring中使用。目前比較推薦使用官方的高階、低階Rest Client,官方維護,比較值得信賴。

項目中使用后Transport Client連接ES,Transport Client是Elasticsearch原生的api,TransportClient可以支持2.x,5.x版本,TransportClient將會在Elasticsearch 7.0棄用并在8.0中完成刪除,因此高版本不推薦此方式。

使用 Spring 注入Bean形式來獲取多個bean實例,代碼如下。

package cn.org.config;

import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Scope;
import java.net.InetAddress;
import java.net.UnknownHostException;

@Slf4j
@Configuration
public class EsConfig {

    @Value("${elasticsearch.cluster-nodes.es1}")
    private String es1ClusterNodes;

    @Value("${elasticsearch.cluster-nodes.es2}")
    private String es2ClusterNodes;


    @Bean(name = "es1ElasticsearchClient")
    @Primary
    @Scope("singleton")
    public TransportClient newElasticsearchClient() {
        return clientInit(es1ClusterNodes);
    }

    @Bean(name = "es2ElasticsearchClient")
    @Scope("singleton")
    public TransportClient archiveElasticsearchClient() {
        return clientInit(es2ClusterNodes);
    }

    public TransportClient clientInit(String clusterNodes) {

        Settings settings = Settings.builder()
                .put("cluster.name", "es_cluster")
                .put("client.transport.sniff", true)
                .build();

        TransportClient transportClient = null;
        try {
            transportClient = new PreBuiltTransportClient(settings);
            String[] allEsIpPort = clusterNodes.split(",");
            String esAddress = allEsIpPort[0];
            String InetSocket[] = esAddress.split(":");
            String address = InetSocket[0];
            Integer port = Integer.valueOf(InetSocket[1]);
            transportClient.addTransportAddress(
                    new InetSocketTransportAddress(InetAddress.getByName(address), port));

        } catch (UnknownHostException e) {
            log.error("初始化ES錯誤:", e);
        }

        return transportClient;
    }

}

?使用時,直接注入多個bean實例進行查詢即可。

package cn.org.biz;

import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import java.util.ArrayList;

@Service
@Slf4j
public class EsService {

  @Qualifier("es1ElasticsearchClient")
  @Autowired
  private TransportClient es1ElasticsearchClient;

  @Qualifier("es2ElasticsearchClient")
  @Autowired
  private TransportClient es2ElasticsearchClient;

  public List<MsgBean> doQueryMsgFromEs1(String userName, String type) {
    List<MsgBean> list = new ArrayList<>();
    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    BoolQueryBuilder queryBuilder =  QueryBuilders.boolQuery();
    queryBuilder.must(QueryBuilders.matchQuery("userName", userName));
    sourceBuilder.query(queryBuilder);
    SearchRequestBuilder builder = es1ElasticsearchClient.prepareSearch(type + "-*");
    SearchResponse searchResponse = builder.setQuery(sourceBuilder.query()).get();
    if (searchResponse.getHits().getTotalHits() > 0) {
      for (SearchHit searchHit : searchResponse.getHits()) {
        MsgBean msgBean = JSON.parseObject(searchHit.getSourceAsString(), MsgBean.class);
        list.add(msgBean);
      }
    }
    return list;
  }

  public List<MsgBean> doQueryMsgFromEs2(String userName, String certType) {
    List<MsgBean> list = new ArrayList<>();
    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    BoolQueryBuilder queryBuilder =  QueryBuilders.boolQuery();
    queryBuilder.must(QueryBuilders.matchQuery("userName", userName));
    sourceBuilder.query(queryBuilder);
    SearchRequestBuilder builder = es2ElasticsearchClient.prepareSearch(type + "-*");
    SearchResponse searchResponse = builder.setQuery(sourceBuilder.query()).get();
    if (searchResponse.getHits().getTotalHits() > 0) {
      for (SearchHit searchHit : searchResponse.getHits()) {
        MsgBean msgBean = JSON.parseObject(searchHit.getSourceAsString(), MsgBean.class);
        list.add(msgBean);
      }
    }
    return list;
  }


}

In this article, we will discuss about “How to create a Spring Boot + Spring Data + Elasticsearch Example”.

Tools used in this article :

  1. Spring Boot 1.5.1.RELEASE
  2. Spring Boot Starter Data Elasticsearch 1.5.1.RELEASE
  3. Spring Data Elasticsearch 2.10.RELEASE
  4. Elasticsearch 2.4.4
  5. Maven
  6. Java 8

Note
SpringBoot 1.5.1.RELEASE and Spring Data Elasticsearch 2.10.RELEASE supports only ElasticSearch 2.4.0. They don’t support the latest version of ElasticSearch 5.x version. Read this –?Spring Data Elasticsearch Spring Boot version matrix

Related?–?Elasticsearch Basics文章來源地址http://www.zghlxwxcb.cn/news/detail-413173.html

到了這里,關于ElasticSearch多數(shù)據(jù)源配置,連接多個ES集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 若依分離版——配置多數(shù)據(jù)源(mysql和oracle),實現(xiàn)一個方法操作多個數(shù)據(jù)源

    若依分離版——配置多數(shù)據(jù)源(mysql和oracle),實現(xiàn)一個方法操作多個數(shù)據(jù)源

    目錄 一、若依平臺配置 ? ? ? ? ??二、編寫oracle數(shù)據(jù)庫訪問的各類文件 ?三.? 一個方法操作多個數(shù)據(jù)源 一、若依平臺配置 1、在ruoyi-admin的pom.xml添加oracle依賴 2、引入ojdbc6.jar包 在ruoyi-admin的resource下創(chuàng)建lib文件夾,將ojdbc6.jar包保存在此目錄下 3.? 刷新maven 刷新maven保證ruo

    2024年02月05日
    瀏覽(71)
  • spring boot es | spring boot 整合elasticsearch | spring boot整合多數(shù)據(jù)源es

    spring boot es | spring boot 整合elasticsearch | spring boot整合多數(shù)據(jù)源es

    目錄 Spring Boot與ES版本對應 Maven依賴 配置類 使用方式 @Test中注入方式 @Component中注入方式 查詢文檔 實體類 通過ElasticsearchRestTemplate查詢 通過JPA查詢 保存文檔 參考鏈接 項目組件版本: Spring Boot:2.2.13.RELEASE Elasticsearch:6.8.0 JDK:1.8.0_66 Tips: 主要看第3列和第5列,根據(jù)ES版本選擇

    2023年04月18日
    瀏覽(27)
  • SpringBoot整合(五)HikariCP、Druid數(shù)據(jù)庫連接池—多數(shù)據(jù)源配置

    SpringBoot整合(五)HikariCP、Druid數(shù)據(jù)庫連接池—多數(shù)據(jù)源配置

    在項目中,數(shù)據(jù)庫連接池基本是必不可少的組件。在目前數(shù)據(jù)庫連接池的選型中,主要是 Druid ,為 監(jiān)控 而生的數(shù)據(jù)庫連接池。 HikariCP ,號稱 性能 最好的數(shù)據(jù)庫連接池。 在Spring Boot 2.X 版本,默認采用 HikariCP 連接池。而阿里大規(guī)模采用 Druid 。下面介紹在SpringBoot中使用Hika

    2024年02月17日
    瀏覽(51)
  • Spring Boot 2.7.5 HikariCP 連接池多數(shù)據(jù)源配置

    Spring Boot 2.7.5 HikariCP 連接池多數(shù)據(jù)源配置

    當前項目遇到需要連接多個數(shù)據(jù)庫的場景,此時需要引入多數(shù)據(jù)源了. 還有一些諸如以下的場景: 與第三方對接時,有些合作方并不會為了你的某些需求而給你開發(fā)一個功能,他們可以提供給你一個可以訪問數(shù)據(jù)源的只讀賬號,你需要獲取什么數(shù)據(jù)由你自己進行邏輯處理,這時

    2024年02月05日
    瀏覽(19)
  • 從多個數(shù)據(jù)源中提取數(shù)據(jù)進行ETL處理并導入數(shù)據(jù)倉庫

    ?? 個人網(wǎng)站:【海擁】【摸魚游戲】【神級源碼資源網(wǎng)】 ?? 前端學習課程:??【28個案例趣學前端】【400個JS面試題】 ?? 想尋找共同學習交流、摸魚劃水的小伙伴,請點擊【摸魚學習交流群】 ETL(Extract, Transform, Load)是一種廣泛應用于數(shù)據(jù)處理和數(shù)據(jù)倉庫建設的方法論,

    2023年04月22日
    瀏覽(18)
  • 數(shù)據(jù)分析法寶,一個 SQL 語句查詢多個異構(gòu)數(shù)據(jù)源

    數(shù)據(jù)分析法寶,一個 SQL 語句查詢多個異構(gòu)數(shù)據(jù)源

    隨著企業(yè)數(shù)據(jù)量呈現(xiàn)出爆炸式增長,跨部門、跨應用、跨平臺的數(shù)據(jù)交互需求越來越頻繁,傳統(tǒng)的數(shù)據(jù)查詢方式已經(jīng)難以滿足這些需求。同時,不同數(shù)據(jù)庫系統(tǒng)之間的數(shù)據(jù)格式、查詢語言等都存在差異,直接進行跨庫查詢十分困難。 雖然 MySQL、Oracle、PostgreSQL 等數(shù)據(jù)庫系統(tǒng)都

    2024年02月05日
    瀏覽(20)
  • 多數(shù)據(jù)源配置從庫連接sqlserver報錯,com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establis

    多數(shù)據(jù)源配置從庫連接sqlserver報錯,com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establis

    一開始我自己本地配置如下: 微軟家的sqlserver驅(qū)動不好用,maven的驅(qū)動如下: 然后在本地網(wǎng)段一致的情況下測試是沒有問題的,當部署線上環(huán)境啟動服務時,加載數(shù)據(jù)源的時候,當加載到sqlserver的數(shù)據(jù)源的時候就開始異常了,異常信息如下: 網(wǎng)上有說修改JDK什么的解決: 這

    2024年02月11日
    瀏覽(20)
  • SpringBoot第27講:SpringBoot集成MySQL - MyBatis 多個數(shù)據(jù)源

    SpringBoot第27講:SpringBoot集成MySQL - MyBatis 多個數(shù)據(jù)源

    本文是SpringBoot第27講,在某些場景下,Springboot需要使用多個數(shù)據(jù)源,以及某些場景會需要多個數(shù)據(jù)源的動態(tài)切換。本文主要介紹上述場景及 SpringBoot+MyBatis實現(xiàn)多個數(shù)據(jù)源的方案和示例 需要了解多數(shù)據(jù)源出現(xiàn)的場景和對應的多數(shù)據(jù)源集成思路。 1.1、什么場景會出現(xiàn)多個數(shù)據(jù)源

    2024年02月09日
    瀏覽(22)
  • SpringBoot初級開發(fā)--加入ElasticSearch數(shù)據(jù)源(4)

    SpringBoot初級開發(fā)--加入ElasticSearch數(shù)據(jù)源(4)

    ??ES就不用我說了吧,如果是安裝的話可以參考我這邊blog《Centos7.9安裝ElasticSearch6》,安裝好ES,接下來我們配置SpringBoot.在配置之前,先看看版本對應表。 1.修改POM文件的依賴 2.增加application.properties配置文件屬性值 緊接上一章的工程,我們在model層下增加一個po實體 Sprin

    2024年02月11日
    瀏覽(17)
  • Grafana系列-統(tǒng)一展示-7-ElasticSearch數(shù)據(jù)源

    Grafana系列-統(tǒng)一展示-7-ElasticSearch數(shù)據(jù)源

    Grafana 系列文章 Grafana內(nèi)置了對Elasticsearch的支持。你可以進行多種類型的查詢,以可視化存儲在Elasticsearch中的日志或指標,并使用存儲在Elasticsearch中的日志事件對圖表進行注釋。 關鍵的幾項配置如下: URL: 設置你的Elasticsearch服務器的HTTP協(xié)議、IP和端口。如: http://192.168.2.1:92

    2024年02月04日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包