一本書講透Elasticsearch
《一本書講透Elasticsearch》,副標題:原理 進階與工程實踐,出版社: 機械工業出版社,ISBN:9787111740353。
機械工業出版社成立於1950年,是建國後國家設立的第一家科技出版社,前身為科學技術出版社,1952年更名為機械工業出版社[1]。機械工業出版社(以下簡稱機工社)由機械工業信息研究院作為主辦單位,目前隸屬於國務院國資委[2]。
目錄
內容簡介
這是一本關於Elasticsearch技術實戰的教程,全面覆蓋了Elastic Stack技術體系知識,旨在幫助讀者深入了解Elasticsearch的核心技術和應用場景,同時掌握分布式搜索與分析引擎的設計思想和實現原理。
目錄
贊 譽
前 言
第一部分 Elastic Stack全局概覽
第1章 Elastic Stack全景 2
1.1 Elasticsearch的過去、
現在和未來 3
1.1.1 Elasticsearch的過去 3
1.1.2 Elasticsearch的現在 5
1.1.3 Elasticsearch的未來 6
1.2 Elastic Stack組成 7
1.2.1 Elasticsearch概覽 7
1.2.2 Logstash概覽 8
1.2.3 Kibana概覽 8
1.2.4 Beats概覽 9
1.3 Elastic Stack的應用場景 9
1.3.1 全文檢索場景 10
1.3.2 日誌分析場景 10
1.3.3 商業智能場景 10
1.4 Elasticsearch競品分析 10
1.4.1 Apache Solr 11
1.4.2 Splunk 11
1.4.3 OpenSearch 11
1.4.4 Doris 12
1.4.5 ClickHouse 12
1.5 本章小結 13
第2章 Elasticsearch基礎知識 14
2.1 搜索引擎基礎知識 14
2.1.1 搜索引擎的目標 14
2.1.2 搜索引擎的核心要求 15
2.1.3 檢索質量的評價指標 15
2.1.4 倒排索引 16
2.1.5 全文檢索 18
2.2 Elasticsearch的核心概念 19
2.2.1 集群 20
2.2.2 節點 20
2.2.3 索引 20
2.2.4 分片 20
2.2.5 副本 21
2.2.6 文檔 21
2.2.7 字段 22
2.2.8 映射 22
2.2.9 分詞 23
2.3 本章小結 23
第3章 Elasticsearch集群部署 25
3.1 Elastic Stack集群部署
基礎知識 25
3.1.1 集群部署平台及操作
系統的選型 26
3.1.2 集群部署的主要步驟 26
3.1.3 Elasticsearch集群堆
內存設置 27
3.1.4 Elasticsearch集群節點
角色劃分 29
3.1.5 Elasticsearch集群核心
配置解讀 35
3.2 Elasticsearch單節點集群與
Kibana的極簡部署 37
3.2.1 Elasticsearch單節點
集群極簡部署 37
3.2.2 Kibana極簡部署 40
3.3 Elasticsearch單節點集群與
Kibana的自定義證書部署 42
3.3.1 Elasticsearch單節點
集群自定義證書部署 43
3.3.2 Kibana自定義證書部署 44
3.4 Elasticsearch多節點
集群部署 46
3.5 Kibana自帶樣例數據導入 47
3.6 本章小結 48
第二部分 Elasticsearch核心技術
第4章 Elasticsearch索引 52
4.1 索引的定義 52
4.1.1 類比關係型數據庫看索引 52
4.1.2 索引定義的實現 53
4.2 索引操作 56
4.2.1 新增/創建索引 56
4.2.2 刪除索引 57
4.2.3 修改索引 57
4.2.4 查詢索引 58
4.3 索引別名 58
4.3.1 別名的定義 58
4.3.2 別名的實現 59
4.3.3 別名應用的常見問題 60
4.4 索引模板 62
4.4.1 索引模板的定義 62
4.4.2 索引模板的基礎操作 64
4.4.3 動態模板實戰 64
4.4.4 索引模板應用的常見問題 66
4.5 本章小結 66
第5章 Elasticsearch映射 68
5.1 映射的定義 68
5.1.1 認識映射 68
5.1.2 元字段 69
5.1.3 數據類型 69
5.1.4 映射類型 72
5.1.5 實戰:映射創建後還
可以更新嗎 75
5.2 Nested類型及應用 77
5.2.1 Nested類型的定義 77
5.2.2 Nested類型的操作 81
5.3 Join類型及應用 83
5.3.1 認識Join類型 83
5.3.2 Join類型基礎實戰 83
5.3.3 Join類型一對多實戰 86
5.4 Flattened類型及應用 89
5.4.1 Elasticsearch字段膨脹問題 89
5.4.2 Flattened類型的產生背景 90
5.4.3 Flattened類型實戰 91
5.4.4 Flattened類型的不足 94
5.5 多表關聯設計 94
5.5.1 Elasticsearch
多表關聯方案 94
5.5.2 多表關聯方案對比 95
5.6 內部數據結構解讀 96
5.6.1 數據存儲的基礎知識 96
5.6.2 倒排索引 96
5.6.3 正排索引 97
5.6.4 fielddata 98
5.6.5 _source字段 100
5.6.6 store字段 100
5.7 詳解null_value 102
5.7.1 null_value的含義 103
5.7.2 null_value使用的
注意事項 104
5.7.3 支持null_value的
核心字段 105
5.8 本章小結 106
第6章 Elasticsearch分詞 108
6.1 認識分詞 108
6.2 為什麼需要分詞 109
6.3 分詞發生的階段 109
6.3.1 寫入數據階段 109
6.3.2 執行檢索階段 109
6.4 分詞器的組成 110
6.4.1 字符過濾 110
6.4.2 文本切分為分詞 111
6.4.3 分詞後再過濾 111
6.5 分詞器的分類 112
6.6 特定業務場景的
自定義分詞案例 113
6.6.1 實戰問題拆解 113
6.6.2 實現方案 114
6.6.3 結果驗證 115
6.7 Ngram自定義分詞案例 116
6.7.1 實戰問題拆解 117
6.7.2 Ngram分詞器定義 118
6.7.3 Ngram分詞實戰 119
6.7.4 Ngram分詞選型的
注意事項 121
6.8 本章小結 121
第7章 Elasticsearch預處理 123
7.1 預處理定義 123
7.2 預處理器分類 125
7.3 預處理實現 125
7.4 預處理實戰案例 126
7.4.1 字符串切分預處理 126
7.4.2 字符串轉JSON格式 127
7.4.3 列表操作 128
7.4.4 enrich預處理 129
7.4.5 預處理實戰的常見問題 137
7.5 本章小結 138
第8章 Elasticsearch文檔 139
8.1 新增文檔 140
8.1.1 文檔ID 140
8.1.2 新增單個文檔 140
8.1.3 新增批量文檔 142
8.2 刪除文檔 143
8.2.1 單個文檔刪除 144
8.2.2 批量文檔刪除 144
8.3 修改/更新文檔 145
8.3.1 更新文檔的前置條件 145
8.3.2 單個文檔部分更新 146
8.3.3 全部文檔更新 148
8.3.4 批量文檔更新 149
8.3.5 取消更新 150
8.4 reindex:遷移文檔 151
8.4.1 reindex操作的
背景及定義 151
8.4.2 同集群索引之間的
全量數據遷移 152
8.4.3 同集群索引之間基於
特定條件的數據遷移 152
8.4.4 不同集群索引之間的
數據遷移 154
8.4.5 查看及取消reindex任務 154
8.4.6 業務零掉線情況下的
數據遷移 155
8.5 本章小結 155
第9章 Elasticsearch腳本 156
9.1 認識Elasticsearch腳本 156
9.1.1 Elasticsearch腳本的背景 156
9.1.2 Painless腳本語言簡介 157
9.2 Elasticsearch腳本的應用
場景和模板 158
9.3 Elasticsearch腳本實戰 158
9.3.1 自定義字段 158
9.3.2 自定義評分 159
9.3.3 自定義更新 159
9.3.4 自定義reindex 160
9.3.5 自定義聚合 161
9.3.6 實戰常見問題 162
9.4 本章小結 163
第10章 Elasticsearch檢索 164
10.1 檢索選型指南 164
10.1.1 Elasticsearch檢索分類 165
10.1.2 精準匹配檢索和全文
檢索的本質區別 167
10.1.3 精準匹配檢索詳解 170
10.1.4 全文檢索類型詳解 179
10.1.5 組合檢索類型詳解 183
10.1.6 query和filter的區別 184
10.2 高亮、排序和分頁 186
10.2.1 高亮 186
10.2.2 排序 188
10.2.3 分頁 190
10.3 自定義評分 191
10.3.1 搜索結果相關度與
自定義評分的關係 191
10.3.2 控制Elasticsearch
相關度 192
10.3.3 計算相關度評分 192
10.3.4 影響相關度評分的
查詢子句 193
10.3.5 自定義評分定義 193
10.4 檢索模板 199
10.4.1 檢索模板基礎知識 199
10.4.2 檢索模板實戰問題及
解決方案 201
10.5 深度解讀Elasticsearch
分頁查詢 206
10.5.1 from + size查詢 206
10.5.2 search_after查詢 209
10.5.3 scroll查詢 212
10.6 本章小結 214
第11章 Elasticsearch聚合 215
11.1 圖解聚合 215
11.1.1 數據源 215
11.1.2 聚合分類 216
11.1.3 聚合應用場景 226
11.2 聚合後分頁的新實現:
組合聚合 226
11.2.1 認識組合聚合 227
11.2.2 組合聚合的應用場景 230
11.2.3 組合聚合的核心功能 230
11.2.4 利用組合聚合進行
聚合後分頁實戰 231
11.3 通過子聚合求解環比問題 233
11.3.1 parent子聚合和sibling
子聚合詳解 234
11.3.2 環比問題拆解 237
11.3.3 環比問題求解實現 237
11.3.4 bucket相關子聚合的
常見問題 239
11.4 Elasticsearch去重 240
11.4.1 去重需求分析 240
11.4.2 去重需求實現 240
11.5 本章小結 243
第12章 Elasticsearch集群 245
12.1 冷熱集群架構 245
12.1.1 認識冷熱集群架構 245
12.1.2 冷熱集群架構的
應用場景 246
12.1.3 冷熱集群架構的優勢 247
12.1.4 冷熱集群架構實戰 247
12.2 索引生命周期管理 249
12.2.1 認識索引生命周期 249
12.2.2 索引生命周期管理的
歷史演變 249
12.2.3 索引生命周期管理的
基礎知識 250
12.2.4 索引生命周期管理的
核心概念 255
12.2.5 索引生命周期管理實戰:
DSL命令行 256
12.2.6 索引生命周期管理實戰:Kibana圖形化界面 258
12.3 跨機房、跨機架部署 261
12.3.1 跨機房、跨機架
部署要求 261
12.3.2 跨機房、跨機架
部署實戰 262
12.4 集群/索引的備份與恢復 264
12.4.1 常見的索引/
集群的備份與恢複方案 264
12.4.2 Elasticsearch快照和
恢復功能 265
12.4.3 elasticdump遷移 268
12.5 快照生命周期管理 269
12.5.1 認識快照生命周期 270
12.5.2 快照生命周期管理實現 270
12.5.3 恢復快照 274
12.5.4 快照生命周期
管理的常見命令 275
12.5.5 通過Kibana圖形化界面
進行快照生命周期管理 277
12.6 跨集群檢索 279
12.6.1 跨集群檢索定義 279
12.6.2 跨集群檢索實戰 279
12.6.3 跨集群檢索優勢 282
12.7 本章小結 282
第13章 Elasticsearch安全 284
13.1 集群安全基礎 284
13.1.1 Elasticsearch如何
保障安全 284
13.1.2 Elasticsearch X-Pack
安全配置 286
13.1.3 設置或重置賬號和密碼 286
13.2 定義基於角色的訪問控制 287
13.3 如何安全使用Elasticsearch
腳本 290
13.3.1 Elasticsearch安全原則 290
13.3.2 腳本類型細分 290
13.3.3 腳本分級限制 292
13.3.4 控制腳本的可用範圍 293
13.4 本章小結 293
第14章 Elasticsearch運維 295
14.1 Elasticsearch集群監控的
維度及指標 295
14.1.1 5個重要監控維度 295
14.1.2 10個核心監控指標 302
14.2 集群故障排查及修復指南 302
14.2.1 集群健康狀態的解讀 303
14.2.2 如何定位紅色或
黃色的索引 303
14.3 運維及故障診斷的常用命令 308
14.4 Elasticsearch監控指標
可視化 310
14.4.1 Elasticsearch監控的
前置條件 310
14.4.2 Metricbeat安裝及Kibana
可視化 312
14.5 Elasticsearch日誌 317
14.5.1 Elasticsearch日誌基礎
知識 317
14.5.2 低級別日誌能否輸出
檢索語句 319
14.5.3 Elasticsearch slowlog的
常見問題 319
14.6 本章小結 322
第三部分 Elasticsearch進階指南
第15章 Elasticsearch核心
工作原理 326
15.1 Elasticsearch文檔版本的
應用原理 326
15.1.1 文檔版本控制機制的
產生背景 326
15.1.2 Elasticsearch文檔
版本定義 327
15.1.3 Elasticsearch文檔
版本衝突 328
15.1.4 常見的並發控制策略 331
15.1.5 如何解決或避免Elasticsearch文檔版本衝突 332
15.2 Elasticsearch文檔更新/
刪除的原理 336
15.2.1 更新/刪除操作時文檔
版本號的變化 337
15.2.2 文檔刪除、索引刪除和
文檔更新的本質 338
15.2.3 文檔更新/刪除的
常見問題 339
15.3 Elasticsearch寫入的原理 341
15.3.1 Elasticsearch寫入的核心
概念 342
15.3.2 Elasticsearch寫入的實現
流程 343
15.3.3 Elasticsearch refresh和
flush操作 344
15.4 Elasticsearch段合併的原理 345
15.4.1 段的基礎知識 345
15.4.2 什麼是段合併 346
15.4.3 為什麼要進行段合併 346
15.4.4 段合併的潛在問題 346
15.4.5 段合併問題的
優化建議 347
15.5 Elasticsearch檢索的原理 347
15.6 本章小結 349
第16章 Elasticsearch性能優化 350
16.1 Elasticsearch性能指標 350
16.2 Elasticsearch通用的性能
優化建議 351
16.3 Elasticsearch寫入優化 357
16.3.1 寫入優化建議 357
16.3.2 寫入過程監控 360
16.4 Elasticsearch檢索優化 361
16.4.1 全量數據和大文檔
處理的優化建議 361
16.4.2 數據建模層面的
優化建議 361
16.4.3 檢索方法層面的
優化建議 363
16.4.4 性能優化的DSL
命令行 367
16.5 本章小結 370
第17章 Elasticsearch實戰
「避坑」指南 372
17.1 Elasticsearch分片 372
17.1.1 常見分片問題 372
17.1.2 分片大小如何影響性能 373
17.1.3 分片及副本設置建議 373
17.2 25個核心Elasticsearch
默認值 375
17.2.1 參數類型以及靜態參數和
動態參數的區別 375
17.2.2 6個Elasticsearch集群級別
參數的關鍵默認值 376
17.2.3 7個Elasticsearch索引級別
參數的關鍵默認值 377
17.2.4 4個Elasticsearch映射級別
參數的關鍵默認值 379
17.2.5 8個其他關鍵默認值 380
17.3 Elasticsearch線程池和隊列 381
17.3.1 線程池簡介 382
17.3.2 線程池類型 383
17.3.3 線程池的基礎知識 383
17.3.4 隊列的基礎知識 384
17.3.5 線程池實戰問題及
注意事項 388
17.4 Elasticsearch熱點線程 389
17.4.1 熱點線程簡介 389
17.4.2 熱點線程支持的參數 389
17.4.3 hot_threads API的
應用原理 390
17.4.4 hot_threads API的
返回結果 391
17.5 規劃Elasticsearch集群規模
和容量 393
17.5.1 Elasticsearch基礎架構 393
17.5.2 維繫Elasticsearch
高性能的4種資源 394
17.5.3 集群規模和容量的
預估方法 395
17.6 Elasticsearch Java客戶端
選型 398
17.6.1 官方Elasticsearch Java
客戶端 398
17.6.2 非官方Elasticsearch Java
客戶端 402
17.6.3 如何進行Elasticsearch Java
客戶端選型 404
17.7 Elasticsearch緩存 404
17.7.1 Elasticsearch緩存分類 404
17.7.2 查詢與清理緩存 408
17.8 Elasticsearch數據建模 409
17.8.1 為什麼要進行數據建模 409
17.8.2 如何實現數據建模 411
17.9 利用JMeter進行Elasticsearch
性能測試 420
17.9.1 Elasticsearch性能測試
工具 420
17.9.2 JMeter部署與啟動 421
17.9.3 關於JMeter性能測試的
4點認知 423
17.9.4 利用JMeter進行Elasticsearch 8.X性能測試 424
17.9.5 JMeter性能測試與優化
實戰 428
17.10 本章小結 431
第四部分 Elasticsearch項目實戰
第18章 Elasticsearch知識庫
檢索系統實戰 434
18.1 知識庫檢索系統的
需求分析 434
18.2 知識庫檢索系統的
技術選型 435
18.2.1 OpenOffice 436
18.2.2 Tika 437
18.2.3 Ingest Attachment 438
18.2.4 FSCrawler 439
18.2.5 Python Flask 439
18.3 知識庫檢索系統的
技術架構 440
18.4 知識庫檢索系統的實現 441
18.4.1 FSCrawler使用
步驟詳解 441
18.4.2 系統實現效果展示 443
18.4.3 數據統計可視化 445
18.5 本章小結 446
第19章 Elastic Stack大數據
可視化系統實戰 447
19.1 大數據可視化系統的
需求分析 447
19.2 大數據可視化系統的
技術架構 447
19.3 大數據可視化系統的設計 448
19.3.1 影評數據獲取的可行性
分析 448
19.3.2 可分析的數據字段及其
結果可視化 451
19.3.3 數據清洗 451
19.3.4 數據建模 452
19.3.5 數據預處理 454
19.4 大數據可視化系統的實現 455
19.4.1 核心指標的可視化 456
19.4.2 數據分析及結論 463
19.5 本章小結 464
第20章 Elastic Stack日誌
系統實戰 465
20.1 日誌系統的需求分析 465
20.2 日誌系統的技術架構 465
20.3 日誌系統的設計 467
20.3.1 date插件 467
20.3.2 grok插件 468
20.4 日誌系統的實現 470
20.4.1 Logstash數據處理 470
20.4.2 Elasticsearch數據同步 472
20.4.3 Kibana可視化分析 474
20.5 本章小結 478
後記 相信積累的力量 479
參考文獻
- ↑ 中國十大出版社-出版社品牌排行榜,買購網
- ↑ 企業簡介,機械工業出版社