转载至: https://www.jb51.net/books/652442.html
下载链接: 点我一键跳转到 下载链接
下载声明: 本资料仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版!
ElasticSearch是一个优秀的开源分布式搜索引擎,同时有良好的社区和商业支持。对于中小型的垂直搜索引擎,ElasticSearch是一个不错的选择。本书是一本ElasticSearch的进阶教材,深入剖析DSL、索引控制、分布式实现、系统运维等高级内容,特别适合深入研究ElasticSearch。
译者序
作者简介
评审者简介
前言
第1章 Elasticsearch简介 1
1.1 Apache Lucene简介 1
1.1.1 熟悉Lucene 2
1.1.2 Lucene的总体架构 2
1.1.3 分析数据 4
1.1.4 Lucene查询语言 5
1.2 何为Elasticsearch 8
1.2.1 Elasticsearch的基本概念 8
1.2.2 Elasticsearch架构背后的关键概念 10
1.2.3 Elasticsearch的工作流程 10
1.3 在线书店示例 14
1.4 小结 17
第2章 查询DSL进阶 18
2.1 Apache Lucene默认评分公式解释 18
2.1.1 何时文档被匹配上 19
2.1.2 TF/IDF评分公式 19
2.1.3 Elasticsearch如何看评分 21
2.1.4 一个例子 21
2.2 查询改写 24
2.2.1 前缀查询示例 24
2.2.2 回到Apache Lucene 26
2.2.3 查询改写的属性 28
2.3 查询模板 30
2.3.1 引入查询模板 31
2.3.2 Mustache模板引擎 33
2.3.3 把查询模板保存到文件 35
2.4 过滤器的使用及作用原理 36
2.4.1 过滤及查询相关性 36
2.4.2 过滤器的工作原理 40
2.4.3 性能考量 41
2.4.4 后置过滤和过滤查询 42
2.4.5 选择正确的过滤方式 44
2.5 选择正确的查询方式 45
2.5.1 查询方式分类 45
2.5.2 使用示例 50
2.6 小结 65
第3章 不只是文本搜索 66
3.1 查询二次评分 66
3.1.1 什么是查询二次评分 67
3.1.2 一个查询例子 67
3.1.3 二次评分查询的结构 67
3.1.4 二次评分参数 70
3.1.5 总结 70
3.2 多匹配控制 71
3.3 重要词项聚合 78
3.3.1 一个例子 79
3.3.2 选择重要词项 81
3.3.3 多值分析 81
3.3.4 额外的配置 84
3.3.5 使用限制 89
3.4 文档分组 89
3.4.1 top_hits聚合 90
3.4.2 一个例子 90
3.5 文档关系 95
3.5.1 对象类型 95
3.5.2 嵌套文档 98
3.5.3 parent-child关系 99
3.5.4 其他解决方案 102
3.6 Elasticsearch各版本中脚本的变化 102
3.6.1 脚本变迁 102
3.6.2 Groovy简单介绍 103
3.6.3 全文检索中的脚本 108
3.6.4 Lucene表达式 115
3.7 小结 118
第4章 改善用户搜索体验 119
4.1 改正用户拼写错误 119
4.1.1 测试数据 120
4.1.2 深入技术细节 121
4.1.3 suggester 121
4.2 改善查询相关性 142
4.2.1 数据 142
4.2.2 改善相关性的探索之旅 145
4.3 小结 157
第5章 分布式索引架构 159
5.1 选择合适的分片和副本数 159
5.1.1 分片和过度分配 160
5.1.2 一个过度分配的正面例子 161
5.1.3 多分片与多索引 161
5.1.4 副本 161
5.2 路由 162
5.2.1 分片和数据 162
5.2.2 测试路由功能 162
5.2.3 索引时使用路由 166
5.2.4 别名 169
5.2.5 多个路由值 169
5.3 调整默认分片的分配行为 170
5.3.1 部署意识 171
5.3.2 过滤 173
5.3.3 运行时更新分配策略 174
5.3.4 确定每个节点允许的总分片数 175
5.3.5 确定每个物理机器允许的总分片数 175
5.4 查询执行偏好 179
5.5 小结 181
第6章 底层索引控制 182
6.1 改变Apache Lucene的评分方式 182
6.1.1 可用的相似度模型 183
6.1.2 为每字段配置相似度模型 183
6.1.3 相似度模型配置 184
6.1.4 选择默认的相似度模型 185
6.2 选择适当的目录实现—store模块 188
6.3 准实时、提交、更新及事务日志 191
6.3.1 索引更新及更新提交 192
6.3.2 事务日志 193
6.3.3 准实时读取 194
6.4 控制索引合并 195
6.4.1 选择正确的合并策略 196
6.4.2 合并策略配置 197
6.4.3 调度 199
6.5 关于I/O调节 200
6.5.1 控制I/O节流 200
6.5.2 配置 200
6.6 理解Elasticsearch缓存 202
6.6.1 过滤器缓存 203
6.6.2 字段数据缓存 204
6.6.3 查询分片缓存 212
6.6.4 使用circuit breaker 213
6.6.5 清除缓存 214
6.7 小结 215
第7章 管理Elasticsearch 216
7.1 发现和恢复模块 216
7.1.1 发现模块的配置 217
7.1.2 主节点 218
7.1.3 网关和恢复模块的配置 223
7.1.4 索引恢复API 226
7.2 使用人类友好的Cat API 229
7.2.1 基础知识 230
7.2.2 使用Cat API 231
7.2.3 一些例子 232
7.3 备份 232
7.4 联盟搜索 236
7.4.1 测试用的集群 236
7.4.2 建立部落节点 237
7.4.3 通过部落节点读取数据 238
7.4.4 通过部落节点写入数据 239
7.4.5 处理索引冲突 240
7.4.6 屏蔽写操作 241
7.5 小结 242
第8章 提高性能 243
8.1 使用doc values来优化查询 243
8.1.1 字段缓存存在的问题 244
8.1.2 使用doc values的例子 245
8.2 了解垃圾回收器 247
8.2.1 Java内存 248
8.2.2 解决垃圾回收问题 249
8.2.3 在类UNIX系统上避免内存交换 254
8.3 对查询做基准测试 255
8.3.1 为基准测试配置集群 256
8.3.2 进行基准测试 256
8.3.3 控制运行中的基准测试 259
8.4 热点线程 261
8.4.1 热点线程的使用说明 261
8.4.2 热点线程API的响应 262
8.5 扩展Elasticsearch 263
8.5.1 垂直扩展 263
8.5.2 水平扩展 264
8.5.3 在高负载的场景下使用Elasticsearch 271
8.6 小结 283
第9章 开发Elasticsearch插件 284
9.1 创建Maven项目 284
9.2 了解基本知识 285
9.2.1 Maven Java项目的结构 285
9.2.2 POM的理念 285
9.2.3 执行构建过程 286
9.2.4 引入Maven装配插件 287
9.3 创建自定义REST行为 289
9.3.1 设定 289
9.3.2 实现细节 289
9.4 创建自定义分析插件 295
9.4.1 实现细节 295
9.4.2 测试自定义分析插件 302
9.5 小结 304