Elasticsearch實戰

Elasticsearch實戰

《Elasticsearch實戰》是2020年4月人民郵電出版社出版的圖書,作者是[美]拉杜·喬戈(Radu Gheorghe)、馬修·李·欣曼、羅伊·羅素。

基本介紹

  • 中文名:Elasticsearch實戰
  • 作者:[美]拉杜·喬戈(Radu Gheorghe)、馬修·李·欣曼、羅伊·羅素
  • ISBN:9787115449153
  • 頁數:337頁
  • 定價:79元
  • 出版社:人民郵電出版社
  • 出版時間:2020年4月
  • 裝幀:平裝
  • 開本:16開
內容簡介,圖書目錄,

內容簡介

本書主要展示如何使用Elasticsearch構建可擴展的搜尋應用程式。書中覆蓋了Elasticsearch的主要特性,從使用不同的分析器和查詢類型進行相關性調優,到使用聚集功能進行實時性分析,還有地理空間搜尋和文檔過濾等更多吸引人的特性。
全書共分兩個部分,第一部分解釋了核心特性,內容主要涉及Elasticsearch的介紹,數據的索引、更新和刪除,數據的搜尋,數據的分析,使用相關性進行搜尋,使用聚集來探索數據,文檔間的關係等;第二部分介紹每個特性工作的更多細節及其對性能和可擴展性的影響,以便對核心功能進行產品化,內容主要涉及水平擴展和性能提升等。此外,本書還有6個附錄(網上下載),提供了讀者應該知道的特性,展示了關於地理空間搜尋和聚集,如何管理Elasticsearch外掛程式,學習在搜尋結果中如何高亮查詢單詞,在生產環境中用來協助管理Elasticsearch的第三方的監控工具有哪些,如何使用Percolator過濾為多個查詢匹配少量文檔,如何使用不同的建議器來實現自動完成的功能。

圖書目錄

第 一部分
第 1章 Elasticsearch介紹 2
1.1 用Elasticsearch解決搜尋問題 3
1.1.1 提供快速查詢 3
1.1.2 確保結果的相關性 4
1.1.3 超越精確匹配 5
1.2 探索典型的Elasticsearch使用案例 6
1.2.1 將Elasticsearch作為主要的後端系統 7
1.2.2 將Elasticsearch添加到現有的系統 7
1.2.3 將Elasticsearch和現有工具一同使用 8
1.2.4 Elasticsearch的主要特性 10
1.2.5 擴展Lucene的功能 10
1.2.6 在Elasticsearch中組織數據 12
1.2.7 安裝Java語言 12
1.2.8 下載並啟動Elasticsearch 13
1.2.9 驗證是否工作 14
1.3 小結 16
第 2章 深入功能 17
2.1 理解邏輯設計:文檔、類型和索引 18
2.1.1 文檔 19
2.1.2 類型 20
2.1.3 索引 21
2.2 理解物理設計:節點和分片 21
2.2.1 創建擁有一個或多個節點的集群 22
2.2.2 理解主分片和副本分片 23
2.2.3 在集群中分發分片 25
2.2.4 分散式索引和搜尋 26
2.3 索引新數據 27
2.3.1 通過cURL索引一篇文檔 28
2.3.2 創建索引和映射類型 30
2.3.3 通過代碼樣例索引文檔 31
2.4 搜尋並獲取數據 32
2.4.1 在哪裡搜尋 33
2.4.2 回復的內容 33
2.4.3 如何搜尋 36
2.4.4 通過ID獲取文檔 39
2.5 配置Elasticsearch 40
2.5.1 在elasticsearch.yml中指定集群的名稱 40
2.5.2 通過logging.yml指定詳細日誌記錄 41
2.5.3 調整JVM設定 41
2.6 在集群中加入節點 42
2.6.1 啟動第二個節點 43
2.6.2 增加額外的節點 44
2.7 小結 45
第3章 索引、更新和刪除數據 47
3.1 使用映射來定義各種文檔 48
3.1.1 檢索和定義映射 49
3.1.2 擴展現有的映射 50
3.2 用於定義文檔欄位的核心類型 51
3.2.1 字元串類型 52
3.2.2 數值類型 54
3.2.3 日期類型 55
3.2.4 布爾類型 56
3.3 數組和多欄位 56
3.3.1 數組 56
3.3.2 多欄位 57
3.4 使用預定義欄位 58
3.4.1 控制如何存儲和搜尋文檔 59
3.4.2 識別文檔 61
3.5 更新現有文檔 63
3.5.1 使用更新API 64
3.5.2 通過版本來實現並發控制 66
3.6 刪除數據 69
3.6.1 刪除文檔 70
3.6.2 刪除索引 71
3.6.3 關閉索引 72
3.6.4 重新索引樣本文檔 73
3.7 小結 73
第4章 搜尋數據 74
4.1 搜尋請求的結構 75
4.1.1 確定搜尋範圍 75
4.1.2 搜尋請求的基本模組 76
4.1.3 基於請求主體的搜尋請求 78
4.1.4 理解回復的結構 81
4.2 介紹查詢和過濾器DSL 82
4.2.1 match查詢和term過濾器 82
4.2.2 常用的基礎查詢和過濾器 85
4.2.3 match查詢和term過濾器 91
4.2.4 phrase_prefix查詢 92
4.3 組合查詢或複合查詢 93
4.3.1 bool查詢 93
4.3.2 bool過濾器 96
4.4 超越match和過濾器查詢 98
4.4.1 range查詢和過濾器 98
4.4.2 prefix查詢和過濾器 99
4.4.3 wildcard查詢 100
4.5 使用過濾器查詢欄位的存在性 102
4.5.1 exists過濾器 102
4.5.2 missing過濾器 102
4.5.3 將任何查詢轉變為過濾器 103
4.6 為任務選擇最好的查詢 104
4.7 小結 105
第5章 分析數據 106
5.1 什麼是分析 106
5.1.1 字元過濾 107
5.1.2 切分為分詞 108
5.1.3 分詞過濾器 108
5.1.4 分詞索引 108
5.2 為文檔使用分析器 109
5.2.1 在索引創建時增加分析器 109
5.2.2 在Elasticsearch的配置中添加分析器 111
5.2.3 在映射中指定某個欄位的分析器 112
5.3 使用分析API來分析文本 113
5.3.1 選擇一個分析器 114
5.3.2 通過組合即興地創建分析器 115
5.3.3 基於某個欄位映射的分析 115
5.3.4 使用詞條向量API來學習索引詞條 116
5.4 分析器、分詞器和分詞過濾器 117
5.4.1 內置的分析器 117
5.4.2 分詞器 119
5.4.3 分詞過濾器 122
5.5 N元語法、側邊N元語法和滑動視窗 128
5.5.1 一元語法過濾器 128
5.5.2 二元語法過濾器 129
5.5.3 三元語法過濾器 129
5.5.4 設定min_gram和max_gram 129
5.5.5 側邊N元語法過濾器 129
5.5.6 N元語法的設定 130
5.5.7 滑動視窗分詞過濾器 131
5.6 提取詞幹 132
5.6.1 算法提取詞幹 133
5.6.2 使用字典提取詞幹 133
5.6.3 重寫分詞過濾器的詞幹提取 134
5.7 小結 134
第6章 使用相關性進行搜尋 136
6.1 Elasticsearch的打分機制 137
6.1.1 文檔打分是如何運作的 137
6.1.2 詞頻 137
6.1.3 逆文檔頻率 138
6.1.4 Lucene評分公式 138
6.2 其他打分方法 139
6.3 boosting 141
6.3.1 索引期間的boosting 142
6.3.2 查詢期間的boosting 142
6.3.3 跨越多個欄位的查詢 143
6.4 使用“解釋”來理解文檔是如何被評分的 144
6.5 使用查詢再打分來減小評分操作的性能影響 147
6.6 使用function_score來定製得分 148
6.6.1 weight函式 149
6.6.2 合併得分 150
6.6.3 field_value_factor函式 151
6.6.4 腳本 152
6.6.5 隨機 152
6.6.6 衰減函式 153
6.6.7 配置選項 155
6.7 嘗試一起使用它們吧 156
6.8 使用腳本來排序 157
6.9 欄位數據 158
6.9.1 欄位數據快取 158
6.9.2 欄位數據用在哪裡 159
6.9.3 管理欄位數據 160
6.10 小結 163
第7章 使用聚集來探索數據 164
7.1 理解聚集的具體結構 166
7.1.1 理解聚集請求的結構 166
7.1.2 運行在查詢結果上的聚集 168
7.1.3 過濾器和聚集 169
7.2 度量聚集 170
7.2.1 統計數據 171
7.2.2 高級統計 172
7.2.3 近似統計 173
7.3 多桶型聚集 176
7.3.1 terms聚集 177
7.3.2 range聚集 183
7.3.3 histogram聚集 185
7.4 嵌套聚集 187
7.4.1 嵌套多桶聚集 189
7.4.2 通過嵌套聚集獲得結果分組 190
7.4.3 使用單桶聚集 192
7.5 小結 196
第8章 文檔間的關係 197
8.1 定義文檔間關係的選項概覽 197
8.1.1 對象類型 198
8.1.2 嵌套類型 200
8.1.3 父子關係 200
8.1.4 反規範化 200
8.2 將對象作為欄位值 202
8.2.1 映射和索引對象 203
8.2.2 在對象中搜尋 204
8.3 嵌套類型:聯結嵌套的文檔 206
8.3.1 映射並索引嵌套文檔 207
8.3.2 搜尋和聚集嵌套文檔 210
8.4 父子關係:關聯分隔的文檔 216
8.4.1 子文檔的索引、更新和刪除 218
8.4.2 在父文檔和子文檔中搜尋 220
8.5 反規範化:使用冗餘的數據管理 227
8.5.1 反規範化的使用案例 228
8.5.2 索引、更新和刪除反規範化的數據 230
8.5.3 查詢反規範化的數據 233
8.6 套用端的連線 234
8.7 小結 235
第二部分
第9章 向外擴展 238
9.1 向Elasticsearch集群加入節點 238
9.2 發現其他Elasticsearch節點 241
9.2.1 通過廣播來發現 241
9.2.2 通過單播來發現 242
9.2.3 選舉主節點和識別錯誤 243
9.2.4 錯誤的識別 244
9.3 刪除集群中的節點 245
9.4 升級Elasticsearch的節點 250
9.4.1 進行輪流重啟 250
9.4.2 最小化重啟後的恢復時間 251
9.5 使用_cat API 252
9.6 擴展策略 254
9.6.1 過度分片 254
9.6.2 將數據切分為索引和分片 255
9.6.3 最大化吞吐量 256
9.7 別名 257
9.7.1 什麼是別名 258
9.7.2 別名的創建 259
9.8 路由 261
9.8.1 為什麼使用路由 261
9.8.2 路由策略 262
9.8.3 使用_search_shards API來決定搜尋在哪裡執行 263
9.8.4 配置路由 265
9.8.5 結合路由和別名 265
9.9 小結 267
第 10章 提升性能 268
10.1 合併請求 269
10.1.1 批量索引、更新和 刪除 269
10.1.2 多條搜尋和多條獲取 API接口 273
10.2 最佳化Lucene分段的 處理 276
10.2.1 刷新和沖刷的閾值 276
10.2.2 合併以及合併策略 279
10.2.3 存儲和存儲限流 282
10.3 充分利用快取 285
10.3.1 過濾器和過濾器 快取 285
10.3.2 分片查詢快取 291
10.3.3 JVM堆和作業系統 快取 293
10.3.4 使用預熱器讓快取 熱身 296
10.4 其他的性能權衡 297
10.4.1 大規模的索引還是 昂貴的搜尋 298
10.4.2 調優腳本,要么 別用它 301
10.4.3 權衡網路開銷,更少的 數據和更好的分散式 得分 305
10.4.4 權衡記憶體,進行深度 分頁 308
10.5 小結 310
第 11章 管理集群 311
11.1 改善默認的配置 311
11.1.1 索引模板 312
11.1.2 默認的映射 315
11.2 分配的感知 318
11.2.1 基於分片的分配 318
11.2.2 強制性的分配感知 319
11.3 監控瓶頸 320
11.3.1 檢查集群的健康 狀態 320
11.3.2 CPU:慢日誌、熱執行緒和 執行緒池 322
11.3.3 記憶體:堆的大小、欄位和 過濾器快取 326
11.3.4 作業系統快取 330
11.3.5 存儲限流 330
11.4 備份你的數據 331
11.4.1 快照API 331
11.4.2 將數據備份到共享的檔案系統 332
11.4.3 從備份中恢復 335
11.4.4 使用資料庫外掛程式 336
11.5 小結 337
附錄A 處理地理空間的數據(網上下載)
附錄B 外掛程式(網上下載)
附錄C 高亮(網上下載)
附錄D Elasticsearch的監控外掛程式(網上下載)
附錄E 使用滲濾器將搜尋顛倒過來(網上下載)
附錄F 為自動完成和“您是指”功能使用建議器(網上下載)

相關詞條

熱門詞條

聯絡我們