SpringBoot2.0高階案例(09):整合 ElasticSearch框架,實現高效能搜尋引擎
本文原始碼
碼雲地址:知了一笑
https://gitee.com/cicadasmile/middle-ware-parent
一、安裝和簡介
ElasticSearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。
搭建執行環境
Linux系統:centos7下搭建ElasticSearch中介軟體,常用介面演示
二、與SpringBoot2整合
1、核心依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>${spring-boot.version}</version> </dependency>
2、配置檔案
spring:
application:
name: ware-elastic-search
data:
elasticsearch:
# 預設 elasticsearch
cluster-name: elasticsearch
# 9200作為Http協議,主要用於外部通訊
# 9300作為Tcp協議,jar之間就是通過tcp協議通訊
cluster-nodes: 192.168.72.130:9300
3、實體類配置
Document 配置
加上了@Document註解之後,預設情況下這個實體中所有的屬性都會被建立索引、並且分詞。
indexName索引名稱 理解為資料庫名 限定小寫
type 理解為資料庫的表名稱
shards = 5 預設分割槽數
replicas = 1 每個分割槽預設的備份數
refreshInterval = "1s" 重新整理間隔
indexStoreType = "fs" 索引檔案儲存型別
程式碼塊
@Document(indexName = "requestlogindex",type = "requestlog") public class RequestLog { //Id註解Elasticsearch裡相應於該列就是主鍵,查詢時可以使用主鍵查詢 @Id private Long id; private String orderNo; private String userId; private String userName; private String createTime; }
4、資料互動層
實現ElasticsearchRepository介面。
public interface RequestLogRepository
extends ElasticsearchRepository<RequestLog,Long> {
}
5、演示案例
資料增加,修改,查詢,排序,多條件查詢。
@Service
public class RequestLogServiceImpl implements RequestLogService {
@Resource
private RequestLogRepository requestLogRepository ;
@Override
public String esInsert(Integer num) {
for (int i = 0 ; i < num ; i++){
RequestLog requestLog = new RequestLog() ;
requestLog.setId(System.currentTimeMillis());
requestLog.setOrderNo(DateUtil.formatDate(new Date(),DateUtil.DATE_FORMAT_02)+System.currentTimeMillis());
requestLog.setUserId("userId"+i);
requestLog.setUserName("張三"+i);
requestLog.setCreateTime(DateUtil.formatDate(new Date(),DateUtil.DATE_FORMAT_01));
requestLogRepository.save(requestLog) ;
}
return "success" ;
}
@Override
public Iterable<RequestLog> esFindAll (){
return requestLogRepository.findAll() ;
}
@Override
public String esUpdateById(RequestLog requestLog) {
requestLogRepository.save(requestLog);
return "success" ;
}
@Override
public Optional<RequestLog> esSelectById(Long id) {
return requestLogRepository.findById(id) ;
}
@Override
public Iterable<RequestLog> esFindOrder() {
// 使用者名稱倒序
// Sort sort = new Sort(Sort.Direction.DESC,"userName.keyword") ;
// 建立時間正序
Sort sort = new Sort(Sort.Direction.ASC,"createTime.keyword") ;
return requestLogRepository.findAll(sort) ;
}
@Override
public Iterable<RequestLog> esFindOrders() {
List<Sort.Order> sortList = new ArrayList<>() ;
Sort.Order sort1 = new Sort.Order(Sort.Direction.ASC,"createTime.keyword") ;
Sort.Order sort2 = new Sort.Order(Sort.Direction.DESC,"userName.keyword") ;
sortList.add(sort1) ;
sortList.add(sort2) ;
Sort orders = Sort.by(sortList) ;
return requestLogRepository.findAll(orders) ;
}
@Override
public Iterable<RequestLog> search() {
// 全文搜尋關鍵字
/*
String queryString="張三";
QueryStringQueryBuilder builder = new QueryStringQueryBuilder(queryString);
requestLogRepository.search(builder) ;
*/
/*
* 多條件查詢
*/
QueryBuilder builder = QueryBuilders.boolQuery()
// .must(QueryBuilders.matchQuery("userName.keyword", "歷張")) 搜尋不到
.must(QueryBuilders.matchQuery("userName", "張三")) // 可以搜尋
.must(QueryBuilders.matchQuery("orderNo", "20190613736278243"));
return requestLogRepository.search(builder) ;
}
}
三、原始碼地址
GitHub地址:知了一笑
https://github.com/cicadasmile/middle-ware-parent
碼雲地址:知了一笑
https://gitee.com/cicadasmile/middle-ware-parent
相關推薦
SpringBoot2.0高階案例(09):整合 ElasticSearch框架,實現高效能搜尋引擎
本文原始碼 碼雲地址:知了一笑 https://gitee.com/cicadasmile/middle-ware-parent
SpringBoot2.0高階案例(08):整合 Dubbo框架 ,實現RPC服務遠端呼叫
一、Dubbo框架簡介 1、框架依賴 圖例說明: 1)圖中小方塊 Protocol, Cluster, Proxy, Servi
SpringBoot2.0高階案例(12):整合 SpringSecurity 框架,實現使用者許可權安全管理
一、Security簡介 1、基礎概念 Spring Security是一個能夠為基於Spring的企業應用系統提供宣告式的安全訪
SpringBoot2.0高階案例(10):整合 JWT 框架,解決Token跨域驗證問題
GitHub原始碼地址:知了一笑 https://github.com/cicadasmile/middle-ware-paren
SpringBoot2.0高階案例(02) :整合 RocketMQ ,實現請求非同步處理
本文原始碼 碼雲地址:知了一笑 https://gitee.com/cicadasmile/middle-ware-parent
SpringBoot2.0高階案例(03):整合 JavaMail ,實現非同步傳送郵件
本文原始碼 碼雲地址:知了一笑 https://gitee.com/cicadasmile/middle-ware-parent
SpringBoot2.0高階案例(05):整合 Swagger2 ,構建介面管理介面
一、Swagger2簡介 1、Swagger2優點 整合到Spring Boot中,構建強大RESTful API文件。省去介面文
SpringBoot2.0高階案例(06):整合 QuartJob ,實現定時器實時管理
一、QuartJob簡介 1、一句話描述 Quartz是一個完全由java編寫的開源作業排程框架,形式簡易,功能強大。 2、核心A
SpringBoot2.0高階案例(07) 整合:Redis叢集 ,實現訊息佇列場景
本文原始碼 GitHub地址:知了一笑 https://github.com/cicadasmile/middle-ware-pa
SpringBoot2高階案例(11):整合 FastDFS 中介軟體,實現檔案分散式管理
一、FastDFS簡介 1、FastDFS作用 FastDFS是一個開源的輕量級分散式檔案系統,它對檔案進行管理,功能包括:檔案儲
SpringBoot--01.SpringBoot2.0入門案例
一、SpringBoot簡介 1、SpringBoot概述(簡化配置、開箱即用) - 為所有 Spring 的開發者提供一個非常快速的、廣泛接受的入門體驗 - 開箱即用(啟動器starter-其實就是SpringBoot提供的一個jar包),但通過自己設定參 (.properties),
微服務 SpringBoot 2.0(九):整合Mybatis
我是SQL小白,我選Mybatis —— Java面試必修 引言 在第五章我們已經整合了Thymeleaf頁面框架,第七章也整合了JdbcTemplate,那今天我們再結合資料庫整合Mybatis框架 在接下來的文章中,我會用一個開源的部落格原始碼來做講解
Springboot2.0啟動報錯:java.lang.NoClassDefFoundError: ch/qos/logback/core/spi/LifeCycle
springboot2.0啟動報錯: java.lang.NoClassDefFoundError: ch/qos/logback/core/spi/LifeCycle at java.lang.ClassLoader.defineClass1(Native Met
springBoot2.0 MyBatis Redis 及RedisCache 整合附demo
springboot2.0 + mybatis 或者 springboot2.0 + redis 在網上可以找到很多資料,但是大都不全或者有這樣那樣的問題,所以便自己動手寫了個demo,能只用 yaml 配置的,儘量不再寫程式碼。 pom.xml <?xml ver
springboot學習入門簡易版四---springboot2.0靜態資源訪問及整合freemarker視圖層
nbsp 規則 pri stat path 整合 位置 啟動程序 -- 2.4.4 SpringBoot靜態資源訪問(9) Springboot默認提供靜態資源目錄位置需放在classpath下,目錄名需要符合如下規則 /static /public /resour
Spring Boot 整合 Elasticsearch,實現 function score query 權重分查詢
search 小寫 業務 jpg 啟動會 last cti cal agen 摘要: 原創出處 www.bysocket.com 「泥瓦匠BYSocket 」歡迎轉載,保留摘要,謝謝! 『 預見未來最好的方式就是親手創造未來 – 《史蒂夫·喬布斯
高階函數:聲明、實現(定義)與調用
bsp 函數 nbsp 參數 形式 高階函數 返回 開放性 其它 高階函數是以參量和返回值的形式引用其它函數的函數; 高階函數是開放的和變化的。 相對於基本函數來說,高階函數提供了可配置性、變化性、開放性。 聲明: 高階函數本身的聲明,引用函數的聲明; 為高階函數和引用
spring boot整合elasticsearch並實現簡單的增刪改查
java操作elasticsearch是作為一個無資料節點與其他節點之間通訊,因此使用的是tcp埠,elasticsearch預設的節點間通訊的tcp埠是9300。elasticsearch和jdk版本一定要適配,因為elasticsearch是用java編寫的,隨著版本的升
SpringBoot整合Elasticsearch並實現CRUD操作
配置準備 在build.gradle檔案中新增如下依賴: compile "org.elasticsearch.client:transport:5.5.2" compile "org.elasticsearch:elasticsearch:
機器學習教程 之 Boosting 與 bagging:整合學習框架
整合學習是機器學習演算法中非常耀眼的一類方法,它通過訓練多個基本的分類器(如支援向量機、神經網路、決策樹等),再通過基本分類器的決策融合,構成一個完整的具有更強學習分辨能力的學習器。在整合學習中,那些基本學習器一般被稱為為“弱學習器“,機器學習的目的就是通過整合