SpringBoot3 整合 Elasticsearch
1.?ElasticSearch
1.1 ES
(1)ES 是一個開源的分布式搜索和分析引擎,專為處理大模型數據而設計,它能夠實現近乎實時的數據檢索、分析和可視化,廣泛用于全文搜索、日志分析和監控(RLK Stack)、數據分析等領域。
(2)核心概念
Index(索引) | 類似數據庫中的“表” |
Document(文檔) | 類似數據庫中的“行”,JSON格式數據 |
Shard(分片) | 索引被分割成多個分片,分片可分布在不同節點上 |
Replica(副本) | 分片的備份 |
Mapping(映射) | 定義文檔的字段及類型 |
1.2 MYSQL 和 ElasticSearch 對比
MYSQL | Database(數據庫) | Row(行) | Column(列) |
↓ | ↓ | ↓ | ↓ |
ElasticSearch | Index(索引) | Document(文檔) | Fileds(字段) |
1.3 ES 數據類型
數據類型 | ||
字符串 | text | 全文搜索(如文章內容、描述),支持分詞、模糊匹配,不適合排序和聚合 |
keyword | 精確匹配(如狀態碼、標簽、ID),不分詞,適合過濾、排序和聚合 | |
數值 | long / integer(整數) double / float(浮點數) | |
日期 | date | |
布爾 | boolean | true / false |
二進制 | binary | 存儲Base64編碼的二進制數據(如圖片) |
對象 | object | JSON對象 |
嵌套 | nested | 對象數組 |
地理 | geo_point | 經緯度坐標 |
geo_shape | 復雜地理形狀(如多邊形區域) | |
數組 | [ ] | 存儲同類型多值 |
2. 下載
ElasticSearch:Download Elasticsearch | Elastic
Kibana可視化平臺:Download Kibana Free | Get Started Now | Elastic
3. 啟動
3.1 啟動ElasticSearch
第一次啟動會初始化一個密碼,用戶名:elastic。
如果忘記密碼,使用命令重置密碼:elasticsearch-reset-password -u elastic
注意要保存新密碼
3.2 啟動 Kibana(先修改配置文件,再啟動)
4. 正排索引和倒排索引
4.1 正排索引(id 映射 內容)
id | content |
100 | 華為 Mate 60 手機 |
101 | iPhone 16 手機 |
102 | 小米汽車 |
4.2 倒排索引(分詞 映射 id)
keyword | id |
手機 | 100,101 |
華為 | 100 |
iPhone | 101 |
汽車 | 102 |
5. Index 索引(使用 PostMan 請求)
5.1 新增 goods 索引( PUT )
// number_of_shards: 定義了索引的主分片數量。數據會被分成幾個分片(shard)
// number_of_replicas: 定義了每個主分片的副本數量。主分片的備份數
// mappings: 定義了索引中存儲的文檔的字段及其數據類型{"settings": {"number_of_shards": 1,"number_of_replicas": 1},"mappings": {"properties": {"goods_name": { "type": "text" },"price": { "type": "float" },"created_time": { "type": "date","format": "yyyy-MM-dd HH:mm:ss" }}}
}
5.2 查詢 goods 索引( GET )
5.3 刪除 goods 索引( DELETE )
6. Document 文檔
6.1 新增 Document( POST _doc )
{"goods_name": "西瓜","price": 19.9,"created_time": "2025-03-24 21:00:00"
}
6.2 根據 id 查詢 Document( GET _doc )
6.3 根據 id 局部更新 Document( POST _update )
驗證局部更新
6.4 根據 id 刪除 Document( DELETE _doc )
6.5 查詢
6.5.1 查詢 goods 所有 Document( GET _search )
6.5.2 條件查詢 goods 的 Document 內容( GET _search )
{"query":{"match":{"goods_name": "香蕉"}},"_source": ["price"]
}
6.5.3 分頁查詢 goods 所有 Document 內容( GET _search )
6.5.4 排序查詢 goods 所有 Document 內容( GET _search )( desc:降序,asc:升序 )
{"sort": {"price":{"order": "desc"}}
}
6.5.5 多條件查詢 goods 所有 Document 內容( GET _search )
{"query":{"bool":{"must":[{ "match":{ "goods_name":"西瓜" } },{ "match":{ "price":19.9 } }]}}
}
6.5.6 范圍查找 goods 所有 Document 內容( GET _search )
6.5.7 全文檢索 && 精確匹配 && 高亮顯示 ( GET _search )
6.5.8?聚合查詢 ( GET _search )
(1)平局值(avg)
(2)求和(sum)
(3)最大值/最小值(max/min)
(4)統計匯總(stats)
7. 分詞器
Standard(單字分詞) | standard | 中,華,人,民,共,和,國,國,歌 |
IK(中文詞庫分詞) | ik_smart(最少切分) | 中華人民共和國,國歌 |
ik_max_word(最細粒度劃分) | 中華人民共和國。中華人民,中華,華人,人民... |
7.1 下載 IK 中文分詞器
Index of: analysis-ik/stable/