第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 词项搜索(TennQuery) 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 Aggregatio 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 catnodeattrs 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