本书在回顾Elasticsearch基础知识的同时,介绍了最新版本Elasticsearch 5的新功能,并对其中级和高级的功能(如查询、索引、搜索和修改数据)进行了详细说明。本书还将探索聚集、指标控制、分片、复制和聚类等概念,并通过实例展示监控管理模块、创建分析插件等。通过本书,读者可以对Elasticsearch 5有一个全面的认识并掌握其性能。
封面图
目录
- 译者序
- 前言
- 致谢
- 作者简介
- 审阅者简介
- 第1章回顾Elasticsearch与演进历史 1
- 1.1Apache Lucene简介 1
- 1.1.1更深入地了解Lucene索引 2
- 1.1.2Elasticsearch概览 7
- 1.2Elasticsearch 5.x介绍 8
- 1.2.1Elasticsearch新特性简介 9
- 1.2.2Elasticsearch的演进 10
- 1.2.32.x到5.x的变化 14
- 1.3小结 16
- 第2章查询DSL进阶 17
- 2.1Lucene的新默认文本评分机制——BM25 17
- 2.1.1理解精确率与召回率 18
- 2.1.2回顾TF-IDF 18
- 2.1.3BM25与TF-IDF有什么不同 21
- 2.2查询DSL重构 22
- 2.3为任务选择合适的查询 22
- 2.3.1查询方式分类 22
- 2.3.2使用示例 27
- 2.3.3查询DSL的其他重要变化 36
- 2.4查询改写 37
- 2.4.1前缀查询示例 37
- 2.4.2回到Apache Lucene 39
- 2.4.3查询改写的属性 40
- 2.5查询模板 43
- 2.5.1引入查询模板 43
- 2.5.2Mustache模板引擎 45
- 2.6小结 49
- 第3章不只是文本搜索 50
- 3.1多匹配控制 50
- 3.2多匹配类型 51
- 3.2.1最佳字段匹配 51
- 3.2.2跨字段匹配 54
- 3.2.3最多字段匹配 55
- 3.2.4短语匹配 56
- 3.2.5带前缀的短语匹配 56
- 3.3用函数得分查询控制分数 57
- 3.4函数得分查询下的内嵌函数 58
- 3.4.1weight函数 58
- 3.4.2字段值因子函数 59
- 3.4.3脚本评分函数 60
- 3.4.4衰变函数——linear、exp和gauss 60
- 3.5查询二次评分 61
- 3.6二次评分查询的结构 62
- 3.7Elasticsearch脚本 66
- 3.7.1语法 66
- 3.7.2Elasticsearch各版本中脚本的变化 66
- 3.8新的默认脚本语言Painless 67
- 3.8.1用Painless写脚本 67
- 3.8.2示例 69
- 3.8.3用脚本为结果排序 71
- 3.8.4按多个字段排序 72
- 3.9Lucene表达式 73
- 3.9.1基础知识 73
- 3.9.2一个例子 73
- 3.10小结 75
- 第4章数据建模与分析 76
- 4.1Elasticsearch中的数据建模方法 76
- 4.2管理Elasticsearch中的关系型数据 77
- 4.2.1对象类型 77
- 4.2.2嵌套文档 80
- 4.2.3父子关系 82
- 4.2.4其他可选方案 84
- 4.2.5数据反范式的例子 84
- 4.3用聚合做数据分析 85
- 4.3.1Elasticsearch 5.0的快速聚合 85
- 4.3.2重温聚合 86
- 4.3.3一类新的聚合:矩阵聚合 93
- 4.4小结 96
- 第5章改善用户搜索体验 97
- 5.1改正用户拼写错误 97
- 5.1.1测试数据 98
- 5.1.2深入技术细节 99
- 5.2suggester 99
- 5.2.1在_search端点下使用suggester 99
- 5.2.2term suggester 103
- 5.2.3phrase suggester 105
- 5.2.4completion suggester 113
- 5.3实现自己的自动完成功能 117
- 5.4处理同义词 120
- 5.4.1为同义词搜索准备settings 120
- 5.4.2格式化同义词 121
- 5.4.3同义词扩展与收缩 122
- 5.5小结 123
- 第6章分布式索引架构 125
- 6.1配置示例的多节点集群 125
- 6.2选择合适数量的分片和副本 127
- 6.2.1分片和预分配 127
- 6.2.2预分配的正面例子 128
- 6.2.3多分片与多索引 128
- 6.3路由 129
- 6.3.1分片和数据 129
- 6.3.2测试路由功能 130
- 6.3.3在索引过程中使用路由 132
- 6.3.4路由实战 132
- 6.3.5查询 134
- 6.3.6别名 136
- 6.3.7多值路由 137
- 6.4分片分配控制 137
- 6.4.1部署意识 138
- 6.4.2确定每个节点允许的总分片数 142
- 6.4.3确定每台物理服务器允许的总分片数 143
- 6.5查询执行偏好 146
- 6.5.1preference参数 146
- 6.5.2使用查询执行偏好的例子 148
- 6.6将数据切分到多个路径中 148
- 6.7索引与类型——创建索引的改进方法 148
- 6.8小结 149
- 第7章底层索引控制 150
- 7.1改变Apache Lucene的评分方式 150
- 7.2可用的相似度模型 151
- 7.3为每个字段配置相似度模型 151
- 7.4相似度模型配置 152
- 7.5选择默认的相似度模型 153
- 7.6选择合适的目录实现——store模块 156
- 7.7存储类型 156
- 7.8准实时、提交、更新及事务日志 158
- 7.8.1索引更新及更新提交 159
- 7.8.2更改默认的刷新时间 159
- 7.8.3事务日志 160
- 7.8.4实时读取 161
- 7.9控制段合并 162
- 7.9.1Elasticsearch合并策略的变化 163
- 7.9.2配置tiered合并策略 163
- 7.9.3合并调度 164
- 7.9.4强制合并 165
- 7.10理解Elasticsearch缓存 166
- 7.10.1节点查询缓存 166
- 7.10.2分片查询缓存 166
- 7.10.3字段数据缓存 168
- 7.10.4使用circuit breaker 168
- 7.11小结 169
- 第8章管理Elasticsearch 170
- 8.1Elasticsearch的节点类型 170
- 8.1.1数据节点 171
- 8.1.2主节点 171
- 8.1.3Ingest节点 171
- 8.1.4部落节点 172
- 8.1.5协调节点/客户端节点 172
- 8.2发现和恢复模块 172
- 8.2.1发现模块的配置 173
- 8.2.2网关和恢复模块的配置 177
- 8.2.3索引恢复API 179
- 8.3使用对人类友好的Cat API 182
- 8.3.1Cap API的基础知识 183
- 8.3.2使用Cat API 184
- 8.4备份 186
- 8.4.1快照API 187
- 8.4.2在文件系统中保存备份 187
- 8.4.3在云中保存备份 189
- 8.5快照恢复 193
- 8.6小结 196
- 第9章数据转换与联盟搜索 197
- 9.1用ingest节点在Elasticsearch里对数据进行预处理 197
- 9.1.1使用ingest管道 198
- 9.1.2处理管道中的错误 202
- 9.1.3使用ingest处理器 204
- 9.2联盟搜索 208
- 9.2.1测试集群 208
- 9.2.2建立部落节点 209
- 9.2.3通过部落节点读取数据 211
- 9.2.4主节点级别的读操作 212
- 9.2.5通过部落节点写入数据 213
- 9.2.6主节点级别的写操作 213
- 9.2.7处理索引冲突 213
- 9.2.8屏蔽写操作 215
- 9.3小结 215
- 第10章提升性能 216
- 10.1查询验证与分析器 216
- 10.1.1在执行前就验证代价大的查询 217
- 10.1.2获得详细查询执行报告的查询分析器 219
- 10.1.3关于查询分析用途的思考 221
- 10.2热点线程 222
- 10.2.1热点线程的使用说明 222
- 10.2.2热点线程API的响应 223
- 10.3扩展Elasticsearch集群 224
- 10.3.1垂直扩展 224
- 10.3.2水平扩展 225
- 10.3.3在高负载的场景下使用Elasticsearch 231
- 10.4用shrink和rollover API高效管理基于时间的索引 242
- 10.4.1shrink API 243
- 10.4.2 rollover API 244
- 10.5小结 246
- 第11章开发Elastisearch插件 247
- 11.1创建Apache Maven的项目架构 247
- 11.1.1了解基础知识 248
- 11.1.2Maven Java项目的结构 248
- 11.2创建自定义REST行为插件 252
- 11.2.1设定 252
- 11.2.2实现细节 252
- 11.2.3测试阶段 256
- 11.2.4检验REST行为插件是否工作正常 257
- 11.3创建自定义分析插件 258
- 11.3.1实现细节 258
- 11.3.2测试自定义分析插件 262
- 11.4小结 264
- 第12章介绍Elastic Stack 5.0 265
- 12.1Elastic Stack 5.0简介 265
- 12.2介绍Logstash、Beats和Kibana 266
- 12.2.1使用Logstash 266
- 12.2.2引入Beats作为数据传输器 271
- 12.2.3使用Kibana 273
- 12.3小结 282