Elasticsearch 全面解析與實踐
內容描述
Elasticsearch是一款功能強大且開源的分佈式搜索與數據分析引擎,
已被許多大的互聯網公司所採用。
除了搜索之外,它還結合Kibana、Logstash、Beats、Elastic Stack一起使用,
被廣泛應用於大數據近實時分析領域,包括日誌分析、指標監控、信息安全等。
它可以幫助用戶搜索海量結構化的數據、非結構化的數據,
按照需求創建可視化的數據報表,
還可以對監控的數據設置報警閾值等功能。
本書將從多個維度系統性地講述Elasticsearch,包括容器化的安裝、
數據索引的維護、各種方式的數據搜索和Elasticsearch的聚合統計分析,
Elasticsearch的底層原理分析以及生產環境的性能調優。
無論是數據搜索還是性能調優,都結合理論的闡述和案例的解析來逐一展開,以方便讀者理解。
目錄大綱
前言
第1章 Elasticsearch入門及應用場景 1
1.1 Elasticsearch概述 1
1.2 Elasticsearch與Solr比較 2
1.3 為什麼要學習Elasticsearch 3
1.4 Elasticsearch的主要功能及應用場景 3
1.5 Elasticsearch的安裝 7
1.5.1 在Linux環境下安裝Elasticsearch 7
1.5.2 在Windows 10環境下安裝Elasticsearch 11
1.5.3 在Docker環境下安裝Elasticsearch 16
1.5.4 Elasticsearch界面化工具 20
第2章 Elasticsearch基礎和操作實例 26
2.1 Elasticsearch的基本概念和相關術語 26
2.2 Elasticsearch操作實例 27
2.2.1 使用PUT創建文檔和替換文檔 27
2.2.2 使用POST創建文檔 33
2.2.3 使用POST修改文檔 35
2.2.4 使用POST查詢所有數據 37
2.2.5 使用DELETE刪除文檔 39
2.2.6 使用GET查詢 41
2.3 Elasticsearch映射 58
2.3.1 動態映射 59
2.3.2 動態映射模板 66
2.3.3 顯式映射 83
第3章 Elasticsearch字段類型 86
3.1 alias類型 87
3.2 數組類型 89
3.3 binary類型 90
3.4 布爾類型 91
3.5 日期類型 93
3.6 nested類型 94
3.7 range類型 96
3.8 數字類型 99
3.9 rank_feature類型 100
3.10 search-as-you-type類型 104
3.11 ip類型 105
3.12 token_count類型 108
3.13 object類型 110
3.14 geo_point類型 112
3.15 geo_shape類型 115
3.16 keyword類型 117
3.17 text類型 118
第4章 內置分詞器和IK分詞器 123
4.1 simple分詞器 123
4.2 simple_pattern分詞器 126
4.3 simple_pattern_split分詞器 127
4.4 standard分詞器 129
4.5 自定義與standard類似的分詞器 134
4.6 keyword類型和text類型的區別 137
4.7 IK分詞器 143
4.7.1 IK分詞器的安裝 143
4.7.2 IK分詞器的測試 146
4.7.3 IK分詞器的兩種分詞模式 150
4.7.4 創建使用IK分詞器的索引映射 154
第5章 Elasticsearch基礎查詢詳解 159
5.1 批量插入數據 159
5.2 查詢所有數據 159
5.3 排序查詢 161
5.4 根據需求返回相應的字段 163
5.5 分頁查詢 164
5.6 查詢指定字段內的特定字詞 165
5.7 段落匹配查詢 166
5.8 term精準查詢 168
5.9 bool多條件查詢 171
5.10 bool和filter組合查詢 173
5.11 簡單的聚合查詢 174
5.11.1 分組統計各組的總條數 175
5.11.2 分組統計每組的平均值 176
5.11.3 分組統計每組的值 177
5.11.4 分組統計每組的最小值 178
5.11.5 分組統計每組的總和 179
5.11.6 分組統計每組的最小值並按統計結果排序 180
第6章 Elasticsearch的組合查詢和全文搜索詳解 183
6.1 組合查詢的布爾查詢 183
6.2 組合查詢的提高評分查詢 187
6.3 組合查詢的固定評分查詢 189
6.4 組合查詢的匹配查詢 190
6.5 組合查詢的使用函數查詢 193
6.5.1 腳本分數 194
6.5.2 權重 195
6.5.3 field_value_factor函數的使用 195
6.5.4 函數查詢案例 196
6.6 全文搜索的match類型查詢 199
6.7 全文搜索的match多個詞查詢 200
6.8 全文搜索的控制match的匹配精度 201
6.9 全文搜索的query_string查詢 203
6.10 全文搜索的simple_query_string查詢 204
6.11 全文搜索的順序匹配查詢 205
6.12 全文搜索的高亮查詢 206
6.13 全文搜索的自定義高亮查詢 209
第7章 Elasticsearch的term level查詢詳解 211
7.1 term level的exists查詢 212
7.2 term level的ids查詢 213
7.3 term level的prefix查詢 215
7.4 term level的term單個單詞查詢 215
7.5 term level的terms多個單詞查詢 217
7.6 term level的動態匹配到單詞的個數 218
7.7 通配符查詢 221
7.8 範圍查詢 223
7.9 模糊匹配查詢 224
7.10 正則表達式查詢 225
第8章 Elasticsearch的聚合桶全面解析 227
8.1 聚合桶概述 227
8.2 數據準備 227
8.3 簡單的聚合 228
8.4 多個聚合 230
8.5 動態腳本聚合 231
8.6 過濾聚合 232
8.7 filter分組聚合 233
8.8 數值範圍聚合 234
8.9 指定範圍間隔聚合 235
8.10 日期範圍聚合 237
第9章 Elasticsearch的Metrics聚合全面解析 240
9.1 Metrics聚合概述 240
9.2 計算加權平均值 240
9.3 去重後求總數量 243
9.4 中位差 244
9.5 聚合統計值、最小值、平均值等信息 245
9.6 字符串統計 246
9.7 百分位數統計 247
9.8 百分位等級計算 249
9.9 聚合後返回前N條數據 250
9.10 使用top_metrics聚合 252
第10章 Elasticsearch高可用集群 254
10.1 Elasticsearch多節點集群環境搭建 254
10.1.1 在Linux環境下搭建Elasticsearch多節點集群 254
10.1.2 在Docker環境下搭建Elasticsearch多節點集群 256
10.1.3 Elasticsearch集群中的相關概念 258
10.2 生產環境集群推薦方案 259
10.3 節點發現 259
10.4 節點故障 260
10.5 集群狀態更新 260
10.6 主節點選舉 261
10.7 “腦裂”問題不再成為問題 262
10.8 分片 263
10.8.1 分片設置 264
10.8.2 多少個分片數量才合理 265
10.8.3 數據存儲分片機制應對擴容和分片故障的方式 265
10.9 數據存儲段合併詳情 266
第11章 高級操作和性能調優 268
11.1 索引別名 268
11.2 索引模板別名 269
11.3 滾動查詢 271
11.4 跨集群查詢 273
11.4.1 多個不相關的單節點集群搭建 273
11.4.2 遠程集群配置 274
11.4.3 跨集群查詢 275
11.5 使用SQL語句操作Elasticsearch 277
11.6 Elasticsearch性能優化詳解 279
11.6.1 數據結構優化 279
11.6.2 查詢優化 279
11.6.3 索引優化設置 280
11.6.4 硬件配置優化 280