《深入理解ElasticSearch》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)酷奇,(美)罗戈任斯基著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2016
  • ISBN:9787111524168
  • 页数:252 页
图书介绍:第1章介绍Apache Lucene的工作方式、ElasticSearch的基本概念。第2章描述Lucene评分机制、如何进行查询重写,另外还介绍ElasticSearch的批处理API及如何使用过滤器来优化查询。第3章描述如何修改Lucene评分,如何使用不同的倒排索引格式来改变索引字段的结构。第4章阐述如何选择恰当的索引分片、路由工作机制、索引分片机制。第5章介绍如何为具体应用选择正确的目录实现,同时阐述发现、网关、恢复模块及其配置方式,以及调优ElasticSearch的缓存机制。第6章介绍JVM垃圾收集的工作原理、重要性以及如何调优,还介绍如何控制ElasticSearch的I/O操作数量和如何诊断ElasticSearch中的问题。第7章介绍帮助修正查询中的拼写错误以及构建高效的自动完成机制——查询建议,还通过实际的案例展示如何通过使用不同查询类型和ElasticSearch的其他功能来提高查询相关性。第8章重点阐释ElasticSearch的JAVA API。第9章通过演示如何开发你自己的河流和语言处理插件来介绍ElasticSearch的插件开发。

第1章 ElasticSearch简介 1

1.1 Apache Lucene简介 1

1.1.1 熟悉Lucene 2

1.1.2 Lucene的总体架构 2

1.1.3 分析你的数据 3

1.1.4 Lucene查询语言 4

1.2 ElasticSearch简介 6

1.2.1 ElasticSearch的基本概念 7

1.2.2 ElasticSearch架构背后的关键概念 8

1.2.3 ElasticSearch的工作流程 9

1.3 小结 13

第2章 查询DSL进阶 14

2.1 Apache Lucene默认评分公式解释 14

2.1.1 何时文档被匹配上 15

2.1.2 TF/IDF评分公式 15

2.1.3 ElasticSearch如何看评分 16

2.2 查询改写 17

2.2.1 前缀查询范例 17

2.2.2 回顾Apache Lucene 19

2.2.3 查询改写的属性 20

2.3 二次评分 21

2.3.1 理解二次评分 21

2.3.2 范例数据 21

2.3.3 查询 22

2.3.4 二次评分查询的结构 22

2.3.5 二次评分参数配置 23

2.3.6 小结 24

2.4 批量操作 24

2.4.1 批量取 24

2.4.2 批量查询 26

2.5 排序 27

2.5.1 基于多值字段的排序 28

2.5.2 基于多值geo字段的排序 28

2.5.3 基于嵌套对象的排序 30

2.6 数据更新API 31

2.6.1 简单字段更新 31

2.6.2 使用脚本按条件更新 32

2.6.3 使用更新API创建或删除文档 33

2.7 使用过滤器优化查询 33

2.7.1 过滤器与缓存 34

2.7.2 词项查找过滤器 36

2.8 ElasticSearch切面机制中的过滤器与作用域 40

2.8.1 范例数据 40

2.8.2 切面计算和过滤 41

2.8.3 过滤器作为查询的一部分 42

2.8.4 切面过滤器 44

2.8.5 全局作用域 45

2.9 小结 47

第3章 底层索引控制 48

3.1 改变Apache Lucene的评分方式 48

3.1.1 可用的相似度模型 49

3.1.2 为每字段配置相似度模型 49

3.2 相似度模型配置 50

3.2.1 选择默认的相似度模型 51

3.2.2 配置被选用的相似度模型 52

3.3 使用编解码器 53

3.3.1 简单使用范例 53

3.3.2 工作原理解释 54

3.3.3 可用的倒排表格式 55

3.3.4 配置编解码器 56

3.4 准实时、提交、更新及事务日志 58

3.4.1 索引更新及更新提交 59

3.4.2 事务日志 60

3.4.3 准实时读取 62

3.5 深入理解数据处理 62

3.5.1 输入并不总是进行文本分析 62

3.5.2 范例的使用 65

3.5.3 索引期更换分词器 67

3.5.4 搜索时更换分析器 68

3.5.5 陷阱与默认分析 68

3.6 控制索引合并 68

3.6.1 选择正确的合并策略 69

3.6.2 合并策略配置 70

3.6.3 调度 72

3.7 小结 73

第4章 分布式索引架构 74

4.1 选择合适的分片和副本数 74

4.1.1 分片和过度分配 75

4.1.2 一个过度分配的正面例子 75

4.1.3 多分片与多索引 76

4.1.4 副本 76

4.2 路由 76

4.2.1 分片和数据 77

4.2.2 测试路由功能 77

4.2.3 索引时使用路由 80

4.2.4 别名 83

4.2.5 多个路由值 83

4.3 调整默认的分片分配行为 84

4.3.1 分片分配器简介 84

4.3.2 even shard分片分配器 84

4.3.3 balanced分片分配器 85

4.3.4 自定义分片分配器 85

4.3.5 裁决者 86

4.4 调整分片分配 88

4.4.1 部署意识 89

4.4.2 过滤 91

4.4.3 运行时更新分配策略 92

4.4.4 确定每个节点允许的总分片数 93

4.4.5 更多的分片分配属性 96

4.5 查询执行偏好 97

4.6 应用我们的知识 99

4.6.1 基本假定 99

4.6.2 配置 100

4.6.3 变化来了 104

4.7 小结 105

第5章 管理ElasticSearch 106

5.1 选择正确的目录实现-存储模块 106

5.2 发现模块的配置 109

5.2.1 Zen发现 109

5.2.2 亚马逊EC2发现 111

5.2.3 本地网关 114

5.2.4 恢复配置 115

5.3 索引段统计 116

5.3.1 segments API简介 116

5.3.2 索引段信息的可视化 118

5.4 理解ElasticSearch缓存 119

5.4.1 过滤器缓存 119

5.4.2 字段数据缓存 121

5.4.3 清除缓存 126

5.5 小结 127

第6章 故障处理 129

6.1 了解垃圾回收器 129

6.1.1 Java内存 130

6.1.2 处理垃圾回收问题 131

6.1.3 在类UNIX系统中避免内存交换 135

6.2 关于I/O调节 136

6.2.1 控制IO节流 136

6.2.2 配置 136

6.3 用预热器提升查询速度 138

6.3.1 为什么使用预热器 138

6.3.2 操作预热器 138

6.3.3 测试预热器 141

6.4 热点线程 144

6.4.1 澄清热点线程API的用法误区 145

6.4.2 热点线程API的响应信息 145

6.5 现实场景 146

6.5.1 越来越差的性能 146

6.5.2 混杂的环境和负载不平衡 148

6.5.3 我的服务器出故障了 149

6.6小结 150

第7章 改善用户搜索体验 151

7.1 改正用户拼写错误 151

7.1.1 测试数据 152

7.1.2 深入技术细节 152

7.1.3 completion suggester 168

7.2 改善查询相关性 172

7.2.1 数据 172

7.2.2 改善相关性的探索之旅 174

7.3 小结 188

第8章 ElasticSearch Java API 189

8.1 ElasticSearch Java API简介 189

8.2 代码 190

8.3 连接到集群 191

8.3.1 成为ElasticSearch节点 191

8.3.2 使用传输机连接方式 192

8.3.3 选择合适的连接方式 193

8.4 API剖析 194

8.5 CRUD操作 195

8.5.1 读取文档 195

8.5.2 索引文档 197

8.5.3 更新文档 199

8.5.4 删除文档 201

8.6 ElasticSearch查询 203

8.6.1 准备查询请求 203

8.6.2 构造查询 203

8.6.3 分页 206

8.6.4 排序 207

8.6.5 过滤 207

8.6.6 切面计算 208

8.6.7 高亮 209

8.6.8 查询建议 209

8.6.9 计数 210

8.6.10 滚动 211

8.7 批量执行多个操作 211

8.7.1 批量操作 211

8.7.2 根据查询删除文档 212

8.7.3 Multi GET 212

8.7.4 Multi Search 212

8.8 Percolator 213

8.9 explain API 214

8.10 构造JSON格式的查询和文档 214

8.11 管理API 216

8.11.1 集群管理API 216

8.11.2 索引管理API 219

8.12 小结 226

第9章 开发ElasticSearch插件 227

9.1 建立Apache Maven项目结构 227

9.1.1 了解基本知识 228

9.1.2 Maven Java项目的结构 228

9.1.3 POM的理念 228

9.1.4 运行构建过程 229

9.1.5 引入Maven装配插件 230

9.2 创建一个自定义 river插件 232

9.2.1 实现细节 232

9.2.2 测试river 238

9.3 创建自定义分析插件 240

9.3.1 实现细节 240

9.3.2 测试自定义分析插件 247

9.4 小结 249