腾迅、*、百度网、*等众多第一线互联网企业正全力推动Elasticsearch的应用情景,这书以丰富多彩的案例主要详细介绍了Elasticsearch的各个方面,可协助用户迅速运用Lucene库解决全文检索业务流程,把握应用Elasticsearch构建分布式系统引擎搜索的方式与方法。
这书是小编在信息搜索、Lucene和Elasticsearch学习培训、具体新项目实践活动全过程中的体会心得和经验交流。这书从基本原理到实践活动,涉及到的內容包含信息搜索的关键定义、Lucene构架、应用Lucene创建索引和数据库索引查寻、Elasticsearch新手入门、Elasticsearch基础检索、Elasticsearch高级搜索、Elasticsearch Java API、Elasticsearch同歩数据库查询、Elasticsearch集群服务器管理方法、Lucene与Elasticsearch新项目实战演练等。
对于初中级开发人员,能够根据这书出示的诸多案例下手,由浅入深,由点到面地开展学习培训;另一个,这书的每一案例都出示了可执行程序与详细的编码注释,进而合理减少学习培训门坎,提升学习兴趣。
针对有程序编写工作经验的开发人员根据学习培训这书,能够用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.5tf-idf权重计算 11
- 1.6 向量空间模型 13
- 1.7 概率检索模型 16
- 1.7.1贝叶斯决策理论 17
- 1.7.2二值独立模型 18
- 1.7.3Okapi BM25模型 20
- 1.7.4BM25F模型 20
- 1.8 本章小结 21
- 第2章 Lucene开发入门 22
- 2.1Lucene概述 22
- 2.1.1Lucene简介 22
- 2.1.2Lucene特点 22
- 2.1.3Lucene架构 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.3Lucene分词详解 30
- 2.3.1Lucene分词系统 30
- 2.3.2分词器测试 31
- 2.3.3IK分词器配置 34
- 2.3.4中文分词器对比 36
- 2.3.5扩展停用词词典 38
- 2.3.6扩展自定义词典 38
- 2.4Lucene索引详解 40
- 2.4.1Lucene字段类型 40
- 2.4.2索引文档示例 41
- 2.4.3Luke中查看索引 46
- 2.4.4索引的删除 48
- 2.4.5索引的更新 49
- 2.5Lucene查询详解 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.6Lucene查询高亮 56
- 2.7Lucene新闻高频词提取 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.1Tika简介 64
- 3.3.2Tika下载 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到Elasticsearch86
- 4.1Elasticsearch概述 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 安装Elasticsearch95
- 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.1IK分词器安装 101
- 4.3.2扩展本地词库 102
- 4.3.3配置远程词库 103
- 4.4Head插件使用指南 105
- 4.4.1Head插件的安装 105
- 4.4.2Head插件的使用 107
- 4.5REST命令 109
- 4.5.1CURL工具 110
- 4.5.2Kibana 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.1match query 188
- 6.2.2match_phrase query 190
- 6.2.3match_phrase_prefix query 190
- 6.2.4multi_match query 190
- 6.2.5common_terms query 191
- 6.2.6query_string query 193
- 6.2.7simple_query_string 193
- 6.3 词项查询 193
- 6.3.1term query 193
- 6.3.2terms query 193
- 6.3.3range query 194
- 6.3.4exists query 194
- 6.3.5prefix query 195
- 6.3.6wildcard query 195
- 6.3.7regexp query 196
- 6.3.8fuzzy query 196
- 6.3.9type query 196
- 6.3.10ids query 197
- 6.4 复合查询 197
- 6.4.1constant_score query 197
- 6.4.2 bool query 198
- 6.4.3dis_max query 198
- 6.4.4function_score query 199
- 6.4.5boosting query 200
- 6.4.6indices query 201
- 6.5 嵌套查询 202
- 6.5.1nested query 202
- 6.5.2has_child query 202
- 6.5.3has_parent query 204
- 6.6 位置查询 205
- 6.6.1geo_distance query 206
- 6.6.2geo_bounding_box query 206
- 6.6.3geo_polygon query 208
- 6.6.4geo_shape query 209
- 6.7 特殊查询 210
- 6.7.1more_like_this query 210
- 6.7.2script query 211
- 6.7.3percolate 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.1Max Aggregation 219
- 7.1.2Min Aggregation 220
- 7.1.3Avg Aggregation 220
- 7.1.4Sum Aggregation 221
- 7.1.5Cardinality Aggregation 221
- 7.1.6Stats Aggregation 222
- 7.1.7Extended Stats Aggregation 222
- 7.1.8Percentiles Aggregation 223
- 7.1.9Value Count Aggregation 224
- 7.2 桶聚合 224
- 7.2.1Terms Aggregation 225
- 7.2.2Filter Aggregation 227
- 7.2.3Filters Aggregation 227
- 7.2.4Range Aggregation 228
- 7.2.5Date Range Aggregation 231
- 7.2.6Date Histogram Aggregation 232
- 7.2.7Missing Aggregation 233
- 7.2.8Children Aggregation 233
- 7.2.9Geo Distance Aggregation 234
- 7.2.10IP Range Aggregation 235
- 7.3 本章小结 236
- 第8章 Elasticsearch Java API 237
- 8.1Java API简介 237
- 8.2Maven依赖 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 CatAPI 275
- 9.4.1cat aliases 275
- 9.4.2cat allocation 275
- 9.4.3cat count 275
- 9.4.4cat fielddata 276
- 9.4.5cat health 276
- 9.4.6cat indices 276
- 9.4.7cat master 276
- 9.4.8cat nodeattrs 277
- 9.4.9cat nodes 277
- 9.4.10cat pending tasks 277
- 9.4.11cat plugins 277
- 9.4.12cat recovery 278
- 9.4.13cat repositories 278
- 9.4.14cat thread pool 278
- 9.4.15cat shards 278
- 9.4.16cat segments 279
- 9.4.17cat templates 279
- 9.5Cluster API 279
- 9.5.1Cluster Health 279
- 9.5.2Cluster State 281
- 9.5.3Cluster Stats 282
- 9.5.4Pending Cluster Tasks 282
- 9.5.5Cluster Reroute 282
- 9.5.6Cluster Update Settings 283
- 9.5.7Nodes Stats 283
- 9.5.8Nodes Info 283
- 9.5.9Task Management API 284
- 9.5.10Cluster 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.1Hadoop基础 304
- 11.1.1SSH配置 304
- 11.1.2Hadoop下载 305
- 11.1.3Hadoop单机模式 305
- 11.1.4Hadoop伪分布式模式 306
- 11.1.5HDFS常用操作 309
- 11.2ES-Hadoop安装 310
- 11.2.1压缩包下载 310
- 11.2.2Maven依赖 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