Elasticsearch實戰(第2版) Elasticsearch in Action, Second Edition
[英]馬杜蘇丹·孔達(Madhusudhan Konda)
- 出版商: 人民郵電
- 出版日期: 2025-01-01
- 定價: $779
- 售價: 8.5 折 $662
- 語言: 簡體中文
- 頁數: 474
- ISBN: 711565445X
- ISBN-13: 9787115654458
-
相關分類:
全文搜尋引擎 Full-text-search
- 此書翻譯自: Elasticsearch in Action, Second Edition
下單後立即進貨 (約4週~6週)
相關主題
商品描述
本書全面深入地介紹Elasticsearch的核心功能及其工作機制。本書由淺入深,從Elasticsearch的基本用法和架構原理,以及倒排索引、分片、節點角色和相關性等核心概念講起;然後深入探討數據處理和索引管理,涵蓋映射模式、數據類型、文本分析、索引模板;接著詳細介紹詞項級搜索、全文搜索、復合查詢和高級搜索等Elasticsearch的搜索功能,並深入講解聚合;最後聚焦生產環境中的Elasticsearch管理和性能優化。本書特別註重實踐,提供了大量的代碼示例,涵蓋從基礎查詢到復雜功能的各種應用場景。與第1版相比,這一版更新並補充了許多新的功能點,如索引生命周期管理、可組合索引模板機制、地理位置查詢等。
本書是使用Elasticsearch開發全功能搜索引擎的實踐指南,適合剛接觸Elasticsearch領域、希望瞭解其基本工作原理的開發者、架構師、分析師、管理者、產品負責人或希望利用Elasticsearch進行實時數據分析和處理的數據科學家閱讀,也適合在實際項目中遇到挑戰的資深工程師及學習大數據技術並對搜索技術感興趣的學生和研究人員閱讀。
作者簡介
[英]马杜苏丹·孔达(Madhusudhan Konda)是全栈首席工程师、架构师,也是技术导师和会议演讲者。他还是一位颇具盛名的技术图书作者,他关于Java、Spring和Hibernate生态系统的书广受读者欢迎。此外,他还提供有关Elasticsearch和Elastic Stack的在线培训。
目錄大綱
目錄
第 1章 概述 1
1.1 一個好的搜索引擎是怎樣的 1
1.2 搜索已成為新常態 2
1.2.1 結構化數據與非結構化(全文)數據 3
1.2.2 數據庫支持的搜索 4
1.2.3 數據庫與搜索引擎 5
1.3 現代搜索引擎 6
1.3.1 功能 6
1.3.2 流行的搜索引擎 7
1.4 Elasticsearch概述 7
1.4.1 核心領域 8
1.4.2 Elastic Stack 9
1.4.3 Elasticsearch的使用場景 10
1.4.4 不適合Elasticsearch的使用場景 11
1.4.5 誤解 12
1.5 業界案例 13
1.6 生成式人工智能與現代搜索 14
1.7 小結 16
第 2章 開始使用 17
2.1 往Elasticsearch中導入數據 18
2.1.1 在線書店 18
2.1.2 索引文檔 19
2.1.3 索引第 一個文檔 22
2.1.4 索引更多文檔 25
2.2 檢索數據 26
2.2.1 計算文檔數量 26
2.2.2 檢索文檔 27
2.3 全文搜索 31
2.3.1 匹配查詢:按作者找書 31
2.3.2 帶有AND運算符的匹配查詢 32
2.3.3 使用_bulk API索引文檔 34
2.3.4 多字段搜索 35
2.3.5 提升結果 36
2.3.6 搜索短語 36
2.3.7 處理缺失單詞的短語 38
2.3.8 處理拼寫錯誤 38
2.4 詞項級查詢 39
2.4.1 term查詢 40
2.4.2 range查詢 41
2.5 復合查詢 41
2.5.1 bool查詢 42
2.5.2 must子句 43
2.5.3 must_not子句 44
2.5.4 should子句 44
2.5.5 filter子句 45
2.6 聚合 46
2.6.1 指標聚合 47
2.6.2 桶聚合 49
2.7 小結 52
第3章 架構 53
3.1 概述 54
3.1.1 數據導入 54
3.1.2 數據處理 55
3.1.3 數據輸出 58
3.2 基本組件 58
3.2.1 文檔 58
3.2.2 索引 62
3.2.3 數據流 63
3.2.4 分片和副本 65
3.2.5 節點和集群 70
3.3 倒排索引 75
3.4 相關性 77
3.4.1 相關性分數 77
3.4.2 相關性(相似性)算法 78
3.5 路由算法 82
3.6 擴展 83
3.6.1 縱向擴展(垂直擴展) 83
3.6.2 橫向擴展(水平擴展) 84
3.7 小結 84
第4章 映射 85
4.1 概述 86
4.1.1 映射定義 86
4.1.2 首次索引文檔 87
4.2 動態映射 89
4.2.1 推斷類型的機制 90
4.2.2 動態映射的局限性 91
4.3 顯式映射 93
4.3.1 使用索引API定義映射 94
4.3.2 使用映射API更新模式 95
4.3.3 不允許修改現有字段 97
4.3.4 類型強制轉換 98
4.4 數據類型 98
4.5 核心數據類型 100
4.5.1 文本數據類型 100
4.5.2 關鍵詞數據類型 104
4.5.3 日期數據類型 106
4.5.4 數值數據類型 108
4.5.5 布爾數據類型 109
4.5.6 範圍數據類型 110
4.5.7 IP地址數據類型 111
4.6 高級數據類型 112
4.6.1 geo_point數據類型 112
4.6.2 object數據類型 114
4.6.3 nested數據類型 118
4.6.4 flattened數據類型 120
4.6.5 join數據類型 122
4.6.6 search_as_you_type數據類型 124
4.7 擁有多種數據類型的字段 126
4.8 小結 127
第5章 處理文檔 128
5.1 索引文檔 129
5.1.1 文檔API 129
5.1.2 索引機制 135
5.1.3 自定義刷新過程 137
5.2 檢索文檔 138
5.2.1 使用單文檔API 139
5.2.2 檢索多個文檔 140
5.2.3 ids查詢 141
5.3 操縱響應 142
5.3.1 從響應中移除元數據 142
5.3.2 抑制源數據 143
5.3.3 包含或排除字段 144
5.4 更新文檔 146
5.4.1 文檔更新機制 146
5.4.2 _update API 147
5.4.3 腳本更新 148
5.4.4 替換文檔 152
5.4.5 更新插入 153
5.4.6 將更新視為更新插入 154
5.4.7 通過查詢更新 155
5.5 刪除文檔 156
5.5.1 通過ID刪除 156
5.5.2 通過查詢刪除 156
5.5.3 通過range查詢刪除 157
5.5.4 刪除所有文檔 158
5.6 批量處理文檔 159
5.6.1 _bulk API的格式 159
5.6.2 批量索引文檔 160
5.6.3 批量請求處理多個索引和操作 161
5.6.4 使用cURL執行批量請求 162
5.7 重新索引文檔 163
5.8 小結 164
第6章 索引操作 165
6.1 概述 166
6.2 創建索引 166
6.2.1 隱式創建索引(自動創建) 167
6.2.2 顯式創建索引(手動創建) 170
6.2.3 自定義索引設置 170
6.2.4 索引映射 172
6.2.5 索引別名 173
6.3 讀取索引 177
6.3.1 讀取公開索引 177
6.3.2 讀取隱藏索引 178
6.4 刪除索引 179
6.4.1 刪除多個索引 179
6.4.2 僅刪除別名 180
6.5 關閉索引和打開索引 180
6.5.1 關閉索引 180
6.5.2 打開索引 181
6.6 索引模板 182
6.6.1 創建可組合(索引)模板 183
6.6.2 創建組件模板 184
6.7 監控和管理索引 186
6.7.1 索引的統計信息 186
6.7.2 多個索引的統計信息 188
6.8 高級操作 189
6.8.1 拆分索引 189
6.8.2 縮小索引 191
6.8.3 滾動更新索引別名 193
6.9 索引生命周期管理 195
6.9.1 索引生命周期 196
6.9.2 手動管理索引生命周期 197
6.9.3 帶有滾動機制的索引生命周期 199
6.10 小結 202
第7章 文本分析 203
7.1 概述 204
7.1.1 查詢非結構化數據 204
7.1.2 分析器來拯救 205
7.2 分析器模塊 205
7.2.1 分詞 205
7.2.2 歸一化 206
7.2.3 分析器的結構 206
7.2.4 測試分析器 208
7.3 內置分析器 209
7.3.1 standard分析器 210
7.3.2 simple分析器 216
7.3.3 whitespace分析器 217
7.3.4 keyword分析器 218
7.3.5 fingerprint分析器 219
7.3.6 pattern分析器 220
7.3.7 語言分析器 221
7.4 自定義分析器 224
7.5 指定分析器 227
7.5.1 為索引指定分析器 227
7.5.2 為搜索指定分析器 228
7.6 字符過濾器 230
7.6.1 html_strip字符過濾器 231
7.6.2 mapping字符過濾器 232
7.6.3 pattern_replace字符過濾器 234
7.7 分詞器 235
7.7.1 standard分詞器 235
7.7.2 ngram分詞器和edge_ngram分詞器 236
7.7.3 其他分詞器 238
7.8 詞元過濾器 238
7.8.1 stemmer詞元過濾器 239
7.8.2 shingle詞元過濾器 239
7.8.3 synonym詞元過濾器 240
7.9 小結 242
第8章 搜索簡介 243
8.1 概述 243
8.2 搜索的工作原理 244
8.3 電影樣本數據 245
8.4 搜索的基礎知識 247
8.4.1 _search端點 247
8.4.2 查詢上下文和過濾上下文 248
8.5 請求和響應的結構 250
8.5.1 搜索請求 250
8.5.2 搜索響應 251
8.6 URI搜索 253
8.6.1 按片名搜索電影 253
8.6.2 搜索特定的電影 254
8.6.3 附加參數 254
8.6.4 使用Query DSL支持URI搜索 255
8.7 Query DSL 255
8.7.1 查詢樣例 256
8.7.2 通過cURL調用Query DSL 256
8.7.3 使用Query DSL進行聚合 257
8.7.4 葉子查詢和復合查詢 257
8.8 搜索功能 258
8.8.1 分頁 259
8.8.2 高亮顯示 260
8.8.3 解釋相關性分數 262
8.8.4 排序 264
8.8.5 操縱結果 267
8.8.6 跨索引和數據流搜索 271
8.9 小結 272
第9章 詞項級搜索 273
9.1 概述 273
9.1.1 詞項級查詢不進行分析 273
9.1.2 詞項級查詢示例 274
9.2 term查詢 275
9.2.1 在text類型的字段上執行term查詢 275
9.2.2 term查詢示例 276
9.2.3 簡化的詞項級查詢 277
9.3 terms查詢 277
9.3.1 terms查詢示例 278
9.3.2 terms查找查詢 279
9.4 ids查詢 280
9.5 exists查詢 281
9.6 range查詢 282
9.7 wildcard查詢 284
9.8 prefix查詢 286
9.8.1 簡化查詢 287
9.8.2 加速prefix查詢 288
9.9 fuzzy查詢 289
9.10 小結 291
第 10章 全文搜索 292
10.1 概述 292
10.1.1 精確率 293
10.1.2 召回率 293
10.2 樣本數據 295
10.3 match_all查詢 295
10.3.1 構建match_all查詢 295
10.3.2 match_all查詢的簡寫格式 296
10.4 match_none查詢 296
10.5 match查詢 297
10.5.1 match查詢的格式 297
10.5.2 使用match查詢搜索 298
10.5.3 分析match查詢 298
10.5.4 搜索多個單詞 299
10.5.5 至少匹配幾個單詞 300
10.5.6 使用fuzziness關鍵詞糾正拼寫錯誤 301
10.6 match_phrase查詢 301
10.7 match_phrase_prefix查詢 303
10.8 multi_match查詢 304
10.8.1 最佳字段 304
10.8.2 dis_max查詢 306
10.8.3 tie_breaker 306
10.8.4 提升單個字段的權重 308
10.9 query_string查詢 309
10.9.1 query_string查詢中的字段 310
10.9.2 默認運算符 311
10.9.3 帶有短語的query_string查詢 312
10.10 模糊查詢 312
10.11 簡單的字符串查詢 313
10.12 simple_query_string查詢 314
10.13 小結 315
第 11章 復合查詢 316
11.1 產品樣本數據 317
11.1.1 產品模式 317
11.1.2 索引產品數據 318
11.2 復合查詢 318
11.3 bool查詢 320
11.3.1 bool查詢結構 320
11.3.2 must子句 321
11.3.3 增強must子句 322
11.3.4 must_not子句 324
11.3.5 增強must_not子句 325
11.3.6 should子句 327
11.3.7 filter子句 332
11.3.8 組合所有子句 334
11.3.9 命名查詢 335
11.4 constant_score查詢 337
11.5 boosting查詢 339
11.6 dis_max查詢 341
11.7 function_score查詢 343
11.7.1 random_score函數 344
11.7.2 script_score函數 345
11.7.3 field_value_factor函數 346
11.7.4 組合函數分數 347
11.8 小結 348
第 12章 高級搜索 349
12.1 位置搜索簡介 350
12.1.1 bounding_box查詢 350
12.1.2 geo_distance查詢 351
12.1.3 geo_shape查詢 351
12.2 地理空間數據類型 352
12.2.1 geo_point數據類型 352
12.2.2 geo_shape數據類型 353
12.3 地理空間查詢 355
12.4 geo_bounding_box查詢 355
12.5 geo_distance查詢 359
12.6 geo_shape查詢 360
12.7 shape查詢 362
12.8 span查詢 364
12.8.1 樣本數據 364
12.8.2 span_first查詢 365
12.8.3 span_near查詢 366
12.8.4 span_within查詢 367
12.8.5 span_or查詢 369
12.9 專用查詢 370
12.9.1 distance_feature查詢 370
12.9.2 pinned查詢 375
12.9.3 more_like_this查詢 376
12.9.4 percolate查詢 377
12.10 小結 381
第 13章 聚合 382
13.1 概述 382
13.1.1 端點和語法 383
13.1.2 結合搜索和聚合 383
13.1.3 多重聚合和嵌套聚合 384
13.1.4 忽略結果 384
13.2 指標聚合 385
13.2.1 樣本數據 385
13.2.2 value_count指標 386
13.2.3 avg指標 387
13.2.4 sum指標 388
13.2.5 min指標和max指標 388
13.2.6 stats指標 389
13.2.7 extended_stats指標 390
13.2.8 cardinality指標 391
13.3 桶聚合 392
13.3.1 直方圖 393
13.3.2 子聚合 396
13.3.3 自定義range聚合 397
13.3.4 terms聚合 399
13.3.5 multi-terms聚合 400
13.4 父聚合和兄弟聚合 401
13.4.1 父聚合 402
13.4.2 兄弟聚合 403
13.5 管道聚合 404
13.5.1 管道聚合的類型 404
13.5.2 樣本數據 404
13.5.3 管道聚合的語法 405
13.5.4 可用的管道聚合 406
13.5.5 cumulative_sum父管道聚合 407
13.5.6 max_bucket和min_bucket兄弟管道聚合 408
13.6 小結 410
第 14章 集群管理 411
14.1 擴展集群 412
14.1.1 向集群中添加節點 412
14.1.2 集群健康 413
14.1.3 提高讀吞吐量 416
14.2 節點間通信 416
14.3 確定分片大小 417
14.3.1 設置單個索引 417
14.3.2 設置多個索引 418
14.4 快照 419
14.4.1 開始使用 420
14.4.2 註冊快照存儲庫 421
14.4.3 創建快照 423
14.4.4 恢復快照 424
14.4.5 刪除快照 424
14.4.6 自動化快照 424
14.5 高級配置 428
14.5.1 主配置文件 429
14.5.2 日誌選項 429
14.5.3 Java虛擬機選項 430
14.6 集群主節點 431
14.6.1 主節點 431
14.6.2 主節點選舉 432
14.6.3 集群狀態 432
14.6.4 法定人數 433
14.6.5 腦裂問題 433
14.6.6 專用主節點 434
14.7 小結 435
第 15章 性能與故障排查 437
15.1 搜索與速度問題 437
15.1.1 現代硬件 438
15.1.2 文檔建模 438
15.1.3 選擇keyword類型而不是text類型 441
15.2 索引速度問題 442
15.2.1 系統生成的ID 442
15.2.2 批量請求 442
15.2.3 調整刷新頻率 442
15.3 集群不穩定問題 445
15.3.1 集群狀態不是綠色 445
15.3.2 未分配的分片 445
15.3.3 磁盤使用閾值 447
15.4 斷路器 449
15.5 結束語 450
15.6 小結 451
附錄A 安裝 452
附錄B 攝取管道 459
附錄C 客戶端 466