開啟主選單

求真百科

一本書講透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

參考文獻