### 前?
有?可能會問,為什么?定要?搜索引擎呢?我們的所有數據不是都可以放在數據庫?嗎??且 Mysql,Oracle,SQL Server 等數據庫?不是也能提供查詢搜索功能,直接通過數據庫查詢不就可以了嗎?
###
確實,我們?部分的查詢功能都可以通過數據庫查詢獲得,如果查詢效率低下,還可以通過新建數據庫索引,優化SQL等?式進?提升效率,甚?通過引?緩存?如redis,memcache來加快數據的返回速度。如果數據量更?,還可以通過分庫分表來分擔查詢壓?。那為什么還要全?搜索引擎呢?我們從?個?度來說。
###
### 數據類型
全?索引搜索很好的?持?結構化數據的搜索,可以更好地快速搜索?量存在的任何單詞?結構化?本。例如Google,百度類的?站搜索,它們都是根據??中的關鍵字?成索引,我們在搜索的時候輸?關鍵字,它們會將該關鍵字即索引匹配到的所有??返回;還有常?的項?中應??志的搜索等等。對于這些?結構化的數據?本,關系型數據庫搜索不是能很好的?持。
###
### 搜索性能
如果使?mysql做搜索,?如有個player表,這個表有user\_name這個字段,我們要查找出user\_name以james開頭的球員,和含有James的球員。我們?般怎么做?數據量達到千萬級別的時候怎么辦?
`select * from player where user_name like 'james%';`
###
### 靈活的搜索
###
如果我們想查出名字叫james的球員,但是?戶輸?了jame,我們想提示他?些關鍵字
###

###
如果我們想查出帶有"冠軍"關鍵字的?章,但是?戶輸?了"總冠軍",我們也希望能查出來。
###

###
### 索引的維護
###
?般傳統數據庫,全?搜索都實現的很雞肋,因為?般也沒??數據庫存??本字段,因為進?全?搜索的時候需要掃描整個表,如果數據量?的話即使對SQL的語法進?優化,也是效果甚微。即使建?了索引,但是維護起來也很麻煩,對于 insert 和 update 操作都會重新構建索引。
###
### 適合全?索引引擎的場景
1. 搜索的數據對象是?量的?結構化的?本數據。
3. ?本數據量達到數?萬或數百萬級別,甚?更多。
5. ?持?量基于交互式?本的查詢。
7. 需求?常靈活的全?搜索查詢。
9. 對安全事務,??本數據操作的需求相對較少的情況。
- 基礎概念
- 為什么不使用mysql做全文搜索
- 常見的搜索引擎
- 快速安裝部署es
- 補充ES和kibana認證
- 補充kibana中文顯示
- ES的目錄以及核心概念介紹
- RESTful風格介紹
- 索引的各類操作
- 映射的各類操作
- 文檔的各類操作
- 搜索的使用
- 中文分詞器
- 常見字段類型
- kibana的安裝
- es批量導入數據
- es的term的多種查詢
- es的范圍查詢
- es的布爾查詢
- es的排序查詢
- es的指標聚合查詢
- es的桶聚合查詢
- es的別名操作
- es重建索引
- es的refresh操作
- es的高亮查詢
- es的查詢建議
- java實操es之集成
- 補充java操作es集成認證
- 補充java連接es集群
- java實操es之準備工作
- java實操es之各種騷操作(一期)
- java實戰之數據庫文件
- java實操es之各種騷操作(二期)
- java實操es之各種騷操作(三期)
- es分布式集群概念介紹
- es分布式集群的搭建
- es分布式集群kibana的配置
- es分布式集群分片管理
- es分布式集群節點健康管理
- es故障排查總結