Elasticsearch服務器開發(第2版)
介紹:
《Elasticsearch服務器開發(第2版)》這一版針對Elasticsearch的新版本更新了內容,增加了第1版中遺漏的重要內容。本書首先介紹如何啟動和運行Elasticsearch、Elasticsearch的基本概念,以及如何以最基本的方式索引和搜索數據。接下來,本書討論了Querydsl查詢語言,通過它可以創建復雜的查詢並過濾返回的結果。此外,本書還展示了如何使用切面技術(faceting)基於查詢結果來計算匯總數據,如何使用新引進的聚合框架,如何使用Elasticsearch的空間搜索和預搜索。最后,這本書將闡釋Elasticsearch的管理API,如分片安置控制和集群處理等功能。
不管你是全文檢索和Elasticsearch的初學者,還是使用過Elasticsearch,你都能從本書中有所收獲。
目錄:
第1章Elasticsearch集群入門1
1.1全文檢索1
1.1.1Lucene詞匯表和架構1
1.1.2輸入數據分析3
1.1.3評分和查詢相關性4
1.2Elasticsearch基礎4
1.2.1數據架構的主要概念4
1.2.2Elasticsearch主要概念6
1.2.3索引建立和搜索6
1.3安裝並配置集群8
1.3.1安裝Java8
1.3.2安裝Elasticsearch8
1.3.3在Linux上用二進制包安裝Elasticsearch9
1.3.4目錄布局9
1.3.5配置Elasticsearch10
1.3.6運行Elasticsearch11
1.3.7關掉Elasticsearch12
1.3.8Elasticsearch作為系統服務運行13
1.4用RESTAPI操作數據14
1.4.1理解Elasticsearch的RESTfulAPI14
1.4.2在Elasticsearch中存儲數據15
1.4.3新建文檔15
1.4.4檢索文檔16
1.4.5更新文檔17
1.4.6刪除文檔18
1.4.7版本控制18
1.5使用URI請求查詢來搜索20
1.5.1示例數據20
1.5.2URI請求20
1.5.3Lucene查詢語法26
1.6小結27
第2章索引28
2.1Elasticsearch索引28
2.1.1分片和副本28
2.1.2創建索引29
2.2映射配置31
2.2.1類型確定機制31
2.2.2索引結構映射33
2.2.3不同的相似度模型43
2.2.4信息格式45
2.2.5文檔值47
2.3批量索引以提高索引速度48
2.3.1為批量索引准備數據48
2.3.2索引數據48
2.3.3更快的批量請求50
2.4用附加的內部信息擴展索引結構50
2.4.1標識符字段50
2.4.2_type字段51
2.4.3_all字段52
2.4.4_source字段52
2.4.5_index字段53
2.4.6_size字段54
2.4.7_timestamp字段54
2.4.8_ttl字段55
2.5段合並介紹56
2.5.1段合並56
2.5.2段合並的必要性56
2.5.3合並策略57
2.5.4合並調度器57
2.5.5合並因子57
2.5.6調節58
2.6路由介紹58
2.6.1默認索引過程59
2.6.2默認搜索過程59
2.6.3路由61
2.6.4路由參數62
2.6.5路由字段62
2.7小結63
第3章搜索64
3.1查詢Elasticsearch64
3.1.1示例數據65
3.1.2簡單查詢66
3.1.3分頁和結果集大小67
3.1.4返回版本值68
3.1.5限制得分69
3.1.6選擇需要返回的字段69
3.1.7使用腳本字段71
3.2理解查詢過程72
3.2.1查詢邏輯72
3.2.2搜索類型73
3.2.3搜索執行偏好74
3.2.4搜索分片API75
3.3基本查詢76
3.3.1詞條查詢76
3.3.2多詞條查詢77
3.3.3match_all查詢77
3.3.4常用詞查詢78
3.3.5match查詢79
3.3.6multi_match查詢81
3.3.7query_string查詢82
3.3.8simple_query_string查詢84
3.3.9標識符查詢84
3.3.10前綴查詢84
3.3.11fuzzy_like_this查詢85
3.3.12fuzzy_like_this_field查詢86
3.3.13fuzzy查詢86
3.3.14通配符查詢88
3.3.15more_like_this查詢88
3.3.16more_like_this_filed查詢89
3.3.17范圍查詢90
3.3.18最大分查詢90
3.3.19正則表達式查詢91
3.4復合查詢91
3.4.1布爾查詢92
3.4.2加權查詢93
3.4.3constant_score查詢94
3.4.4索引查詢94
3.5查詢結果的過濾95
3.5.1使用過濾器95
3.5.2過濾器類型96
3.5.3過濾器的緩存104
3.6高亮顯示105
3.6.1高亮顯示入門105
3.6.2字段配置106
3.6.3深入底層107
3.6.4配置HTML標簽107
3.6.5控制高亮片段108
3.6.6全局設置與局部設置108
3.6.7需要匹配109
3.6.8信息高亮器111
3.7驗證查詢113
3.8數據排序115
3.8.1默認排序115
3.8.2選擇用於排序的字段116
3.8.3指定缺少字段的行為118
3.8.4動態條件118
3.8.5排序規則和國家特有字符119
3.9查詢重寫119
3.9.1重寫過程示例119
3.9.2查詢重寫的屬性120
3.10小結121
第4章擴展索引結構122
4.1索引樹形結構122
4.1.1數據結構122
4.1.2分析123
4.2索引非扁平數據124
4.2.1數據124
4.2.2對象125
4.2.3數組125
4.2.4映射125
4.2.5向Elasticsearch發送映射127
4.2.6動態還是非動態127
4.3使用嵌套對象128
4.4使用父子關系131
4.4.1索引結構和數據索引131
4.4.2查詢132
4.4.3父子關系和過濾134
4.4.4性能考慮134
4.5使用更新API修改索引結構135
4.5.1映射135
4.5.2添加一個新字段135
4.5.3修改字段136
4.6小結137
第5章更好的搜索138
5.1ApacheLucene評分簡介138
5.1.1當文檔被匹配時138
5.1.2默認評分公式139
5.1.3相關性的意義140
5.2Elasticsearch的腳本功能140
5.2.1腳本執行過程中可用的對象140
5.2.2MVEL141
5.2.3使用其他語言141
5.2.4使用自定義腳本庫142
5.3搜索不同語言的內容145
5.3.1區分處理不同語言145
5.3.2多語言處理145
5.3.3檢測文檔的語言146
5.3.4示例文檔146
5.3.5映射文件147
5.3.6查詢148
5.4使用查詢加權影響得分150
5.4.1加權150
5.4.2為查詢添加加權150
5.4.3修改得分153
5.5索引時加權何時有意義160
5.5.1在輸入數據中定義字段加權160
5.5.2在映射中定義加權161
5.6同義詞161
5.6.1同義詞過濾器161
5.6.2定義同義詞規則162
5.6.3查詢時或索引時的同義詞擴展164
5.7理解解釋信息164
5.7.1理解字段分析164
5.7.2解釋查詢165
5.8小結167
第6章超越全文檢索168
6.1聚合168
6.1.1一般查詢結構168
6.1.2可用的聚合170
6.1.3聚合的嵌套185
6.1.4桶排序和嵌套聚合187
6.1.5全局和子集187
6.2切面190
6.2.1文檔結構190
6.2.2返回的結果190
6.2.3使用查詢進行切面計算191
6.2.4使用過濾器進行切面計算192
6.2.5terms切面193
6.2.6基於范圍的切面194
6.2.7數值和日期直方圖切面196
6.2.8數值型字段統計數據的計算197
6.2.9詞條統計數據的計算198
6.2.10地理切面199
6.2.11切面結果的過濾200
6.2.12內存考慮201
6.3使用建議器201
6.3.1可用的建議器類型201
6.3.2包含建議器201
6.3.3term建議器203
6.3.4phrase建議器204
6.3.5completion建議器205
6.4預匹配器209
6.4.1示例索引209
6.4.2預匹配器的准備209
6.4.3深入211
6.5文件的處理214
6.6地理217
6.6.1為空間搜索准備映射217
6.6.2示例數據218
6.6.3示例查詢218
6.6.4任意地理形狀222
6.7卷動API226
6.7.1問題定義226
6.7.2作為解決方案的卷動226
6.8多詞條過濾器228
6.9小結232
第7章深入Elasticsearch集群233
7.1節點發現233
7.1.1發現的類型233
7.1.2主節點234
7.1.3設置集群名235
7.1.4節點的ping設置236
7.2時光之門與恢復模塊236
7.2.1時光之門236
7.2.2恢復控制237
7.3為高查詢和高索引吞吐量准備Elasticsearch集群238
7.3.1過濾器緩存238
7.3.2字段數據緩存和斷路器238
7.3.3存儲模塊239
7.3.4索引緩沖和刷新率240
7.3.5線程池的配置240
7.3.6結合起來,一些通用建議241
7.4模板和動態模板244
7.4.1模板244
7.4.2動態模板245
7.5小結246
第8章集群管理248
8.1Elasticsearch時光機248
8.1.1創建快照存儲庫248
8.1.2創建快照249
8.1.3還原快照251
8.1.4清理:刪除舊的快照252
8.2監控集群的狀態和健康度252
8.2.1集群健康度API252
8.2.2索引統計API253
8.2.3狀態API256
8.2.4節點信息API256
8.2.5節點統計API257
8.2.6集群狀態API257
8.2.7掛起任務API258
8.2.8索引段API258
8.2.9catAPI258
8.3控制集群的再平衡260
8.3.1再平衡260
8.3.2集群的就緒260
8.3.3集群再平衡設置260
8.4控制分片和副本的分配261
8.4.1顯式控制分配262
8.4.2集群范圍的分配264
8.4.3每個節點上的分片和副本數量265
8.4.4手動移動分片和副本265
8.5預熱267
8.5.1定義一個新的預熱查詢267
8.5.2獲取定義的預熱查詢268
8.5.3刪除一個預熱查詢269
8.5.4禁用預熱功能269
8.5.5查詢的選擇270
8.6使用索引別名來簡化你的日常工作270
8.6.1別名271
8.6.2創建別名271
8.6.3修改別名271
8.6.4合並命令272
8.6.5獲取所有別名272
8.6.6移除別名273
8.6.7別名中的過濾273
8.6.8別名和路由273
8.7Elasticsearch插件274
8.7.1基礎知識274
8.7.2安裝插件274
8.7.3移除插件275
8.8更新設置API275
8.9小結276
1.1全文檢索1
1.1.1Lucene詞匯表和架構1
1.1.2輸入數據分析3
1.1.3評分和查詢相關性4
1.2Elasticsearch基礎4
1.2.1數據架構的主要概念4
1.2.2Elasticsearch主要概念6
1.2.3索引建立和搜索6
1.3安裝並配置集群8
1.3.1安裝Java8
1.3.2安裝Elasticsearch8
1.3.3在Linux上用二進制包安裝Elasticsearch9
1.3.4目錄布局9
1.3.5配置Elasticsearch10
1.3.6運行Elasticsearch11
1.3.7關掉Elasticsearch12
1.3.8Elasticsearch作為系統服務運行13
1.4用RESTAPI操作數據14
1.4.1理解Elasticsearch的RESTfulAPI14
1.4.2在Elasticsearch中存儲數據15
1.4.3新建文檔15
1.4.4檢索文檔16
1.4.5更新文檔17
1.4.6刪除文檔18
1.4.7版本控制18
1.5使用URI請求查詢來搜索20
1.5.1示例數據20
1.5.2URI請求20
1.5.3Lucene查詢語法26
1.6小結27
第2章索引28
2.1Elasticsearch索引28
2.1.1分片和副本28
2.1.2創建索引29
2.2映射配置31
2.2.1類型確定機制31
2.2.2索引結構映射33
2.2.3不同的相似度模型43
2.2.4信息格式45
2.2.5文檔值47
2.3批量索引以提高索引速度48
2.3.1為批量索引准備數據48
2.3.2索引數據48
2.3.3更快的批量請求50
2.4用附加的內部信息擴展索引結構50
2.4.1標識符字段50
2.4.2_type字段51
2.4.3_all字段52
2.4.4_source字段52
2.4.5_index字段53
2.4.6_size字段54
2.4.7_timestamp字段54
2.4.8_ttl字段55
2.5段合並介紹56
2.5.1段合並56
2.5.2段合並的必要性56
2.5.3合並策略57
2.5.4合並調度器57
2.5.5合並因子57
2.5.6調節58
2.6路由介紹58
2.6.1默認索引過程59
2.6.2默認搜索過程59
2.6.3路由61
2.6.4路由參數62
2.6.5路由字段62
2.7小結63
第3章搜索64
3.1查詢Elasticsearch64
3.1.1示例數據65
3.1.2簡單查詢66
3.1.3分頁和結果集大小67
3.1.4返回版本值68
3.1.5限制得分69
3.1.6選擇需要返回的字段69
3.1.7使用腳本字段71
3.2理解查詢過程72
3.2.1查詢邏輯72
3.2.2搜索類型73
3.2.3搜索執行偏好74
3.2.4搜索分片API75
3.3基本查詢76
3.3.1詞條查詢76
3.3.2多詞條查詢77
3.3.3match_all查詢77
3.3.4常用詞查詢78
3.3.5match查詢79
3.3.6multi_match查詢81
3.3.7query_string查詢82
3.3.8simple_query_string查詢84
3.3.9標識符查詢84
3.3.10前綴查詢84
3.3.11fuzzy_like_this查詢85
3.3.12fuzzy_like_this_field查詢86
3.3.13fuzzy查詢86
3.3.14通配符查詢88
3.3.15more_like_this查詢88
3.3.16more_like_this_filed查詢89
3.3.17范圍查詢90
3.3.18最大分查詢90
3.3.19正則表達式查詢91
3.4復合查詢91
3.4.1布爾查詢92
3.4.2加權查詢93
3.4.3constant_score查詢94
3.4.4索引查詢94
3.5查詢結果的過濾95
3.5.1使用過濾器95
3.5.2過濾器類型96
3.5.3過濾器的緩存104
3.6高亮顯示105
3.6.1高亮顯示入門105
3.6.2字段配置106
3.6.3深入底層107
3.6.4配置HTML標簽107
3.6.5控制高亮片段108
3.6.6全局設置與局部設置108
3.6.7需要匹配109
3.6.8信息高亮器111
3.7驗證查詢113
3.8數據排序115
3.8.1默認排序115
3.8.2選擇用於排序的字段116
3.8.3指定缺少字段的行為118
3.8.4動態條件118
3.8.5排序規則和國家特有字符119
3.9查詢重寫119
3.9.1重寫過程示例119
3.9.2查詢重寫的屬性120
3.10小結121
第4章擴展索引結構122
4.1索引樹形結構122
4.1.1數據結構122
4.1.2分析123
4.2索引非扁平數據124
4.2.1數據124
4.2.2對象125
4.2.3數組125
4.2.4映射125
4.2.5向Elasticsearch發送映射127
4.2.6動態還是非動態127
4.3使用嵌套對象128
4.4使用父子關系131
4.4.1索引結構和數據索引131
4.4.2查詢132
4.4.3父子關系和過濾134
4.4.4性能考慮134
4.5使用更新API修改索引結構135
4.5.1映射135
4.5.2添加一個新字段135
4.5.3修改字段136
4.6小結137
第5章更好的搜索138
5.1ApacheLucene評分簡介138
5.1.1當文檔被匹配時138
5.1.2默認評分公式139
5.1.3相關性的意義140
5.2Elasticsearch的腳本功能140
5.2.1腳本執行過程中可用的對象140
5.2.2MVEL141
5.2.3使用其他語言141
5.2.4使用自定義腳本庫142
5.3搜索不同語言的內容145
5.3.1區分處理不同語言145
5.3.2多語言處理145
5.3.3檢測文檔的語言146
5.3.4示例文檔146
5.3.5映射文件147
5.3.6查詢148
5.4使用查詢加權影響得分150
5.4.1加權150
5.4.2為查詢添加加權150
5.4.3修改得分153
5.5索引時加權何時有意義160
5.5.1在輸入數據中定義字段加權160
5.5.2在映射中定義加權161
5.6同義詞161
5.6.1同義詞過濾器161
5.6.2定義同義詞規則162
5.6.3查詢時或索引時的同義詞擴展164
5.7理解解釋信息164
5.7.1理解字段分析164
5.7.2解釋查詢165
5.8小結167
第6章超越全文檢索168
6.1聚合168
6.1.1一般查詢結構168
6.1.2可用的聚合170
6.1.3聚合的嵌套185
6.1.4桶排序和嵌套聚合187
6.1.5全局和子集187
6.2切面190
6.2.1文檔結構190
6.2.2返回的結果190
6.2.3使用查詢進行切面計算191
6.2.4使用過濾器進行切面計算192
6.2.5terms切面193
6.2.6基於范圍的切面194
6.2.7數值和日期直方圖切面196
6.2.8數值型字段統計數據的計算197
6.2.9詞條統計數據的計算198
6.2.10地理切面199
6.2.11切面結果的過濾200
6.2.12內存考慮201
6.3使用建議器201
6.3.1可用的建議器類型201
6.3.2包含建議器201
6.3.3term建議器203
6.3.4phrase建議器204
6.3.5completion建議器205
6.4預匹配器209
6.4.1示例索引209
6.4.2預匹配器的准備209
6.4.3深入211
6.5文件的處理214
6.6地理217
6.6.1為空間搜索准備映射217
6.6.2示例數據218
6.6.3示例查詢218
6.6.4任意地理形狀222
6.7卷動API226
6.7.1問題定義226
6.7.2作為解決方案的卷動226
6.8多詞條過濾器228
6.9小結232
第7章深入Elasticsearch集群233
7.1節點發現233
7.1.1發現的類型233
7.1.2主節點234
7.1.3設置集群名235
7.1.4節點的ping設置236
7.2時光之門與恢復模塊236
7.2.1時光之門236
7.2.2恢復控制237
7.3為高查詢和高索引吞吐量准備Elasticsearch集群238
7.3.1過濾器緩存238
7.3.2字段數據緩存和斷路器238
7.3.3存儲模塊239
7.3.4索引緩沖和刷新率240
7.3.5線程池的配置240
7.3.6結合起來,一些通用建議241
7.4模板和動態模板244
7.4.1模板244
7.4.2動態模板245
7.5小結246
第8章集群管理248
8.1Elasticsearch時光機248
8.1.1創建快照存儲庫248
8.1.2創建快照249
8.1.3還原快照251
8.1.4清理:刪除舊的快照252
8.2監控集群的狀態和健康度252
8.2.1集群健康度API252
8.2.2索引統計API253
8.2.3狀態API256
8.2.4節點信息API256
8.2.5節點統計API257
8.2.6集群狀態API257
8.2.7掛起任務API258
8.2.8索引段API258
8.2.9catAPI258
8.3控制集群的再平衡260
8.3.1再平衡260
8.3.2集群的就緒260
8.3.3集群再平衡設置260
8.4控制分片和副本的分配261
8.4.1顯式控制分配262
8.4.2集群范圍的分配264
8.4.3每個節點上的分片和副本數量265
8.4.4手動移動分片和副本265
8.5預熱267
8.5.1定義一個新的預熱查詢267
8.5.2獲取定義的預熱查詢268
8.5.3刪除一個預熱查詢269
8.5.4禁用預熱功能269
8.5.5查詢的選擇270
8.6使用索引別名來簡化你的日常工作270
8.6.1別名271
8.6.2創建別名271
8.6.3修改別名271
8.6.4合並命令272
8.6.5獲取所有別名272
8.6.6移除別名273
8.6.7別名中的過濾273
8.6.8別名和路由273
8.7Elasticsearch插件274
8.7.1基礎知識274
8.7.2安裝插件274
8.7.3移除插件275
8.8更新設置API275
8.9小結276