從 Lucene 到 Elasticsearch : 全文檢索實戰
內容描述
本書循序漸進介紹了信息檢索、布爾檢索、向量空間模型、tf-idf、BM25排序算法、Lucene架構、Lucene創建索引、Lucene查詢、Lucene項目實戰、Elasticsearch安裝與配置、Elasticsearch插件安裝、REST API數據操作、映射與模板、索引別名、Elasticsearch基本和高級搜索、Elasticsearch同步數據庫、Elasticsearch集群管理、項目實戰等內容。閱讀本書,讀者能夠掌握信息檢索的核心概念,應用Lucene庫處理全文檢索業務,掌握Elasticsearch分佈式搜索引擎的使用方法與技巧。
本書基於Lucene 6.0和Elasticsearch 5.4.0進行講解,技術先進,示例豐富,適合想學習信息檢索技術的初學者和相關專業的大學生、研究生學習,也很適合大數據及雲計算平臺構建人員以及有一定基礎的IT開發人員使用。
海報:
目錄大綱
第1章信息檢索模型1
1.1信息檢索概述1
1.1.1信息過載1
1.1.2信息檢索定義2
1.1.3信息檢索常用術語3
1.1.4信息檢索系統4
1.2分詞算法5
1.2.1分詞算法概述5
1.2.2詞典匹配分詞法6
1.2.3語義理解分詞法6
1.2.4詞頻統計分詞法7
1.3倒排索引7
1.4布爾檢索模型9
1.5 tf-idf權重計算11
1.6向量空間模型13
1.7概率檢索模型16
1.7.1貝葉斯決策理論17
1.7.2二值獨立模型18
1.7.3 Okapi BM25模型20
1.7.4 BM25F模型20
1.8本章小結21
第2章Lucene開發入門22
2.1 Lucene概述22
2.1. 1 Lucene簡介22
2.1.2 Lucene特點22
2.1.3 Lucene架構23
2.2 Lucene開發準備25
2.2.1下載Lucene文件庫25
2.2.2工程中引入Lucene 26
2.2.3下載Luke 27
2.2.4下載IK分詞工具28
2.2.5工程搭建29
2.3 Lucene分詞詳解30
2.3.1 Lucene分詞系統30
2.3.2分詞器測試31
2.3.3 IK分詞器配置34
2.3.4中文分詞器對比36
2.3.5擴展停用詞詞典38
2.3.6擴展自定義詞典38
2.4 Lucene索引詳解40
2.4.1 Lucene字段類型40
2.4.2索引文檔示例41
2.4.3 Luke中查看索引46
2.4 .4索引的刪除48
2.4.5索引的更新49
2.5 Lucene查詢詳解50
2.5.1搜索入門51
2.5.2多域搜索(MultiFieldQueryParser) 52
2.5.3詞項搜索(TermQuery) 53
2.5.4布爾搜索( BooleanQuery) 53
2.5.5範圍搜索(RangeQuery) 54
2.5.6前綴搜索(PrefixQuery) 55
2.5.7多關鍵字搜索(PhraseQuery) 55
2.5.8模糊搜索(FuzzyQuery) 55
2.5.9通配符搜索(WildcardQuery) 56
2.6 Lucene查詢高亮56
2.7 Lucene新聞高頻詞提取58
2.7.1問題提出58
2.7.2需求分析58
2.7.3編程實現58
2.8本章小結61
第3章Lucene文件檢索項目實戰62
3.1需求分析62
3.2架構設計63
3.3文本內容抽取64
3.3.1 Tika簡介64
3.3.2 Tika下載64
3.3.3搭建工程65
3.3.4內容抽取66
3.3.5自動解析68
3.4工程搭建71
3.5索引文檔72
3.6查詢界面75
3.7文件檢索77
3.8結果展示80
3.9本章小結85
第4章從Lucene到Elasticsearch 86
4.1 Elasticsearch概述86
4.1.1誕生過程86
4.1.2流行度分析88
4.1.3架構解讀89
4.1.4優點89
4.1. 5應用場景90
4.1.6核心概念92
4.1.7對比RDMS 94
4.1.8文檔結構94
4.2安裝Elasticsearch 95
4.2.1安裝Java 96
4.2.2下載Elasticsearch 97
4.2.3啟動Elasticsearch 97
4.2.4後台運行Elasticsearch 99
4.2.5關閉Elasticsearch 99
4.2.6基本配置100
4.3中文分詞器配置101
4.3.1 IK分詞器安裝101
4.3.2擴展本地詞庫102
4.3.3配置遠程詞庫103
4.4 Head插件使用指南105
4.4.1 Head插件的安裝105
4.4.2 Head插件的使用107
4.5 REST命令109
4.5.1 CURL工具110
4.5.2 Kibana Dev Tools 111
4.6本章小結112
第5章Elasticsearch集群入門113
5.1索引管理113
5.1.1新建索引113
5.1.2更新副本115
5.1.3讀寫權限115
5.1.4查看索引116
5.1.5刪除索引117
5.1.6索引的打開與關閉118
5.1.7複製索引118
5.1.8收縮索引119
5.1.9索引別名120
5.2文檔管理123
5.2.1新建文檔123
5.2.2獲取文檔125
5.2.3更新文檔127
5.2.4查詢更新129
5.2.5刪除文檔129
5.2.6查詢刪除130
5.2.7批量操作130
5.2.8版本控制133
5.2.9路由機制136
5.3映射詳解137
5.3.1映射分類137
5.3.2動態映射138
5.3.3日期檢測140
5.3.4靜態映射141
5.3.5字段類型142
5.3. 6元字段156
5.3.7映射參數162
5.3.8映射模板180
5.4本章小結181
第6章Elasticsearch搜索詳解182
6.1搜索機制182
6.2全文查詢188
6.2.1 match query 188
6.2.2 match_phrase query 190
6.2.3 match_phrase_prefix query 190
6.2.4 multi_match query 190
6.2.5 common_terms query 191
6.2.6 query_string query 193
6.2.7 simple_query_string 193
6.3詞項查詢193
6.3.1 term query 193
6.3.2 terms query 193
6.3.3 range query 194
6.3.4 exists query 194
6.3.5 prefix query 195
6.3.6 wildcard query 195
6.3.7 regexp query 196
6.3.8 fuzzy query 196
6.3.9 type query 196
6.3.10 ids query 197
6.4複合查詢197
6.4.1 constant_score query 197
6.4.2 bool query 198
6.4.3 dis_max query 198
6.4. 4 function_score query 199
6.4.5 boosting query 200
6.4.6 indices query 201
6.5嵌套查詢202
6.5.1 nested query 202
6.5.2 has_child query 202
6.5.3 has_parent query 204
6.6位置查詢205
6.6.1 geo_distance query 206
6.6.2 geo_bounding_box query 206
6.6.3 geo_polygon query 208
6.6.4 geo_shape query 209
6.7特殊查詢210
6.7.1 more_like_this query 210
6.7.2 script query 211
6.7.3 percolate query 211
6.8搜索高亮213
6.8.1自定義高亮片段213
6.8.2多字段高亮213
6.8.3高亮性能分析214
6.9搜索排序215
6.9.1默認排序215
6.9.2多字段排序215
6.9.3分片影響評分216
6.10本章小結218
第7章聚合分析219
7.1指標聚合219
7.1.1 Max Aggregation 219
7.1.2 Min Aggregation 220
7.1.3 Avg Aggregation 220
7.1.4 Sum Aggregation 221
7.1.5 Cardinality Aggregation 221
7.1.6 Stats Aggregation 222
7.1.7 Extended Stats Aggregation 222
7.1.8 Percentiles Aggregation 223
7.1.9 Value Count Aggregation 224
7.2桶聚合224
7.2.1 Terms Aggregation 225
7.2.2 Filter Aggregation 227
7.2.3 Filters Aggregation 227
7.2. 4 Range Aggregation 228
7.2.5 Date Range Aggregation 231
7.2.6 Date Histogram Aggregation 232
7.2.7 Missing Aggregation 233
7.2.8 Children Aggregation 233
7.2.9 Geo Distance Aggregation 234
7.2.10 IP Range Aggregation 235
7.3本章小結236
第8章Elasticsearch Java API 237
8.1 Java API簡介237
8.2 Maven依賴238
8.3依賴衝突240
8.4連接到集群240
8.4.1傳輸機連接241
8.4.2節點連接241
8.4.3代碼實現241
8.5索引管理243
8.6文檔管理246
8.6.1新建文檔246
8.6.2獲取文檔249
8.6.3刪除文檔250
8.6.4更新文檔250
8.6.5查詢刪除252
8.6.6批量獲取252
8.6.7批量操作253
8.7搜索詳解254
8.7.1全文查詢257
8.7.2詞項查詢257
8.7.3複合查詢258
8.7.4嵌套查詢260
8.7.5位置查詢260
8.7. 6特殊查詢261
8.8聚合分析262
8.8.1指標聚合263
8.8.2桶聚合265
8.9集群管理269
8.10本章小結269
第9章集群管理270
9.1集群規劃270
9.2索引規劃272
9.3分佈式集群273
9.4 Cat API 275
9.4.1 cat aliases 275
9.4.2 cat allocation 275
9.4.3 cat count 275
9.4.4 cat fielddata 276
9.4.5 cat health 276
9.4.6 cat indices 276
9.4.7 cat master 276
9.4.8 cat nodeattrs 277
9.4.9 cat nodes 277
9.4.10 cat pending tasks 277
9.4.11 cat plugins 277
9.4 .12 cat recovery 278
9.4.13 cat repositories 278
9.4.14 cat thread pool 278
9.4.15 cat shards 278
9.4.16 cat segments 279
9.4.17 cat templates 279
9.5 Cluster API 279
9.5.1 Cluster Health 279
9.5.2 Cluster State 281
9.5.3 Cluster Stats 282
9.5.4 Pending Cluster Tasks 282
9.5.5 Cluster Reroute 282
9.5.6 Cluster Update Settings 283
9.5.7 Nodes Stats 283
9.5.8 Nodes Info 283
9.5.9 Task Management API 284
9.5.10 Cluster Allocation Explain API 284
9.6監控插件284
9.7本章小結286
第10章新聞搜索項目實戰287
10.1需求分析287
10.2數據準備288
10.3數據導入290
10.4查詢界面294
10.5搜索新聞296
10.6結果展示298
10.7本章小結302
第11章Elasticsearch For Hadoop 303
11.1 Hadoop基礎304
11.1.1 SSH配置304
11.1.2 Hadoop下載305
11.1.3 Hadoop單機模式305
11.1.4 Hadoop偽分佈式模式306
11.1. 5 HDFS常用操作309
11.2 ES-Hadoop安裝310
11.2.1壓縮包下載310
11.2.2 Maven依賴310
11.3從HDFS到Elasticsearch 311
11.3.1測試數據311
11.3.2編寫程序312
11.3.3代碼分析313
11.4從Elasticsearch到HDFS 314
11.4.1讀取索引到HDFS 314
11.4.2查詢Elasticsearch寫入HDFS 315
11.5本章小結316
參考文獻317
作者介紹
姚攀:中國科學院大學碩士,擅長j2ee開發,對搜索引擎技術有濃厚的興趣和較深入研究,有豐富的Lucene和ElasticSearch開發經歷和項目經驗,活躍於CSDN社區,目前在一家公司做ES搜索業務開發。