Java項目初始化ES、MYSQL表結構及表數據

?一、初始化MYSQL數據

public boolean initMysql() throws Exception {log.info("initMysql.start");//獲取所連接的數據庫名稱  String database = systemMapper.getDatabase();if (StringUtils.isBlank(database)) {throw new BusinessException("連接數據庫失敗,數據庫不存在");}//當庫中沒有表、則執行sql腳本if (systemMapper.countTable(database) == 0) {SqlSession sqlSession = sqlSessionFactory.openSession();Connection conn = sqlSession.getConnection();String mysqlInitPath="config/mysql/init.sql";ClassPathResource rc = new ClassPathResource(mysqlInitPath);EncodedResource er = new EncodedResource(rc, "utf-8");ScriptUtils.executeSqlScript(conn, er);log.info("initMysql.db:" + database + ".end");}log.info("initMysql.end");return true;
}

其中SystemMapper為

@Mapper
public interface SystemMapper {//獲得當前數據庫表的數量@Select("select count(*) from information_schema.TABLES where TABLE_SCHEMA= #{schema}")int countTable(@Param("schema")String schema);//===獲得當前連接的數據庫名稱@Select("select database()")String getDatabase();
}

二、初始化ES數據

public boolean initEs() throws Exception {log.info("initEs.start");// 讀取配置String artInfoMappingPath =config/es/art_info_index_mapping.jsonString artInfoMapping = ResourceUtil.readStr(artInfoMappingPath,        StandardCharsets.UTF_8);// 創建博文索引String esIndex="wechat"createIndexIfNotExist(esIndex, artInfoMapping);// 創建別名String?alias="art_info";addAlias(alias, esIndex); return true;
}

?如果索引不存在就創建es索引

    private void createIndexIfNotExist(String index, String mapping) {// 判斷索引存不存在if (StrUtil.isBlank(index) || esAggregateService.indexExist(index)) {return;}log.info("initEs --> index: {}", index);// 創建索引CreateIndexRequest request = new CreateIndexRequest(index);Settings.Builder settings = Settings.builder().put("max_result_window", 100000);request.settings(settings);request.mapping(mapping, XContentType.JSON);createIndex(request);}

?

public void createIndex(CreateIndexRequest request) {try {CreateIndexResponse response = elasticSearchClient.indices().create(request, RequestOptions.DEFAULT);log.info("create index: {}, isAcknowledged: {}", response.index(), response.isAcknowledged());} catch (IOException e) {log.error("ES 索引創建失敗 --> ", e);throw new BusinessException(ResultCode.INTERNAL_SERVER_ERROR);}
}

?根據需要、添加es別名

@Override
public void addAlias(String alias, String... index) {// 構建請求參數IndicesAliasesRequest indicesAliasesRequest = new IndicesAliasesRequest();IndicesAliasesRequest.AliasActions aliasActions = new IndicesAliasesRequest.AliasActions(IndicesAliasesRequest.AliasActions.Type.ADD).indices(index).alias(alias);indicesAliasesRequest.addAliasAction(aliasActions);try {AcknowledgedResponse response = elasticSearchClient.indices().updateAliases(indicesAliasesRequest, RequestOptions.DEFAULT);log.info("add alias --> index: {}, alias: {}, isAcknowledged: {}", index, alias, response.isAcknowledged());} catch (IOException e) {log.error("ES 別名創建失敗 --> ", e);throw new BusinessException(ResultCode.INTERNAL_SERVER_ERROR);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35010.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35010.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35010.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信小程序時鐘

微信小程序自定義時鐘&#xff0c;模擬翻牌時鐘。1、頁面布局 <view class"date-time-box"><view class"date-box">{{nowDate}}</view><view class"time-box"><view><image class"pic01 {{move[0]?move…

代碼隨想錄算法訓練營第45天|動態規劃part07

8.11 周五 70. 爬樓梯 &#xff08;進階&#xff09; 322. 零錢兌換 279.完全平方數 詳細布置 70. 爬樓梯 &#xff08;進階&#xff09; 題目&#xff1a;一次可爬1或2個臺階&#xff0c;問n個臺階有多少種方式 題解&#xff1a; 1、轉換為完全背包問題&#xff0c;nums[1…

Ajax-AJAX請求的不同發送方式

&#x1f954;&#xff1a;你一定能成為想要成為的人 發送AJAX請求不同方式 發送AJAX請求不同方式1、jQuery發送AJAX請求2、axios發送AJAX請求&#xff08;重點&#xff09;3、fetch發送AJAX請求 發送AJAX請求不同方式 1、jQuery發送AJAX請求 首先需要jquery的js文件&#xf…

Vc - Qt - QToolButton

QToolButton 是 Qt 框架中的一個類&#xff0c;是 QPushButton 的子類。它可以顯示一個可單擊的按鈕&#xff0c;并且可以與彈出菜單、圖標和文本等進行關聯。 QToolButton的一些常見特性和用法包括&#xff1a; 設置文本&#xff1a;使用 setText() 函數設置按鈕上的文本。設置…

webpack 熱更新的實現原理

webpack 的熱更新?稱熱替換&#xff08;Hot Module Replacement&#xff09;&#xff0c;縮寫為HMR。這個機制可以做到不?刷新瀏覽器?將新變更的模塊替換掉舊的模塊。 原理&#xff1a; ?先要知道 server 端和 client 端都做了處理?作&#xff1a; 在 webpack 的 watch…

uniapp點擊輸入框時鍵盤不上推頁面

adjust-position設置為false&#xff0c;然后監聽鍵盤的高度賦值給輸入框bottom 這里還一個非常重要的地方&#xff0c;在根元素設置touchmove.stop.prevent&#xff0c;這樣在ios上頁面就不會滾動&#xff0c;不影響其他組件內部滾動 onReady() {// 監聽鍵盤高度變化&#x…

Redis集群 (三十九)

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 目錄 前言 一、Redis主從復制 1.1 概念 1.2 作用 1.3 缺點 1.4 流程 1.5 搭建 1.6 驗證 二、Reids哨兵模式 2.1 概念 2.2 作用 2.3 缺點 2.4 結構 2.5 搭建 2.6 驗證 三、Red…

confluent-kafka 和kafka-python操作kafka,并封裝成一個類

為了向Kafka集群生產和消費消息&#xff0c;我們可以使用confluent-kafka庫&#xff0c;它是Confluent為Python提供的官方Kafka客戶端。以下是一個簡化的示例&#xff0c;展示如何將Kafka的生產者和消費者操作封裝到一個類中&#xff1a; 首先&#xff0c;確保你已經安裝了所需…

解決nvm安裝后,node生效但npm無效

問題描述 nvm安裝后&#xff0c;node生效但npm無效 清除緩存 C:\Users\cc\AppData\Roaming cc是我的用戶名改成你自己的就行刪除 npm和npm-cache

form表單構造http請求的寫法

from是html的一個標簽&#xff0c;from是html后早http請求的一種方式&#xff0c;它和input標簽密切配合。 from有兩個基本屬性action和method&#xff0c;action就是http請求url中的路徑部分。method就是構造的http請求的方法。 form和input標簽配合構造鍵值對&#xff0c;鍵值…

批量將excel文件合并

要批量合并多個Excel文件&#xff0c;可以按照以下步驟進行操作&#xff1a; 1. 導入所需的Python庫&#xff1a;首先&#xff0c;您需要導入pandas庫來處理Excel文件。 import pandas as pd 2. 定義文件路徑和輸出文件名稱&#xff1a; input_folder "your_input_fo…

如何在Vue中實現模板渲染優化?什么是Vue的雙向數據綁定原理?

1、如何在Vue中實現模板渲染優化&#xff1f; 在Vue中實現模板渲染優化&#xff0c;有以下幾個方法&#xff1a; 使用計算屬性&#xff08;computed properties&#xff09;代替方法&#xff08;methods&#xff09;&#xff1a;計算屬性會在首次渲染時進行計算&#xff0c;并…

數據結構筆記--二叉樹經典高頻題

1--二叉樹的最近公共祖先 主要思路&#xff1a; 最近祖先只有兩種情況&#xff1a;① 自底向上&#xff0c;當兩個目的結點分別在當前結點的左右子樹時&#xff0c;當前結點為兩個目的結點的最近祖先&#xff1b;② 最近祖先與其中一個目的結點相同&#xff0c;則另一個目的結點…

Python-OpenCV中的圖像處理-形態學轉換

Python-OpenCV中的圖像處理-形態學轉換 形態學轉換腐蝕膨脹開運算閉運算形態學梯度禮帽黑帽形態學操作之間的關系 形態學代碼例程 形態學轉換 形態學操作:腐蝕&#xff0c;膨脹&#xff0c;開運算&#xff0c;閉運算&#xff0c;形態學梯度&#xff0c;禮帽&#xff0c;黑帽等…

企業微信 企業內部開發 學習筆記

官方文檔 文檔 術語介紹 引入pom <dependency><groupId>com.github.binarywang</groupId><artifactId>wx-java-cp-spring-boot-starter</artifactId><version>4.5.3.B</version></dependency>核心代碼 推送消息 final WxCp…

面試攻略,Java 基礎面試 100 問(十一)

抽象類&#xff08;abstract class&#xff09;和接口&#xff08;interface&#xff09;有什么異同? 抽象類和接口都不能夠實例化&#xff0c;但可以定義抽象類和接口類型的引用。一個類如果繼承了某個抽象類或者實現了某個接口都需要對其中的抽象方法全部進行實現&#xff…

SpringBoot 后端項目利用 Minio 實現分片上傳、斷點續傳

一、準備工作 安裝 Minio 服務后&#xff0c;在 SpringBoot 項目中添加依賴&#xff1a; <!-- MinIO --><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.1</version></dependency&g…

【js】日期、時間正則匹配

1、日期的正則表達式 格式&#xff1a;2023-08-11 var reg /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/; var regExp new RegExp(reg); if(!regExp.test(value)){alert("日期格式不正確");return; }2、時間的正則表達式 格式&#xff1a;23:00:00…

英碼國產高配邊緣計算盒子上市!搭載TPU處理器BM1684X,適配麒麟系統,支持OTA升級!

隨著人工智能技術不斷深入實際應用場景&#xff0c;加速各行各業場景應用落地&#xff0c;邊緣計算的重要性越發凸顯。相較于傳統的集中式云計算&#xff0c;邊緣計算在距離數據源或用戶更近的地方提供計算能力&#xff0c;不僅滿足了對實時性要求較高的場景應用需求&#xff0…