深入理解elasticsearch是一本由软件开发专家拉斐尔·酷奇所著的计算机专业电子书,这本书涵盖了大量典型实例,讲解深入浅出针,透彻易懂,针对性较强,即实用又不乏深度,需要的朋友快来下载吧!
第1章详细介绍ApacheLucene的工作中方法、ElasticSearch的基本要素。第2章叙述Lucene得分体制、怎样开展查寻重写,另一个还详细介绍ElasticSearch的批处理API及怎么使用过滤装置来提升查寻。第3章叙述怎样改动Lucene得分,怎么使用不一样的倒排索引文件格式来更改数据库索引字段名的构造。第4章论述怎样挑选适当的数据库索引分块、路由器工作方案、数据库索引分块体制。第5章详细介绍怎样为实际运用挑选恰当的文件目录保持,一起论述发觉、网关ip、修复控制模块以及配备方法,及其调优ElasticSearch的缓存文件体制。第6章详细介绍JVM废弃物搜集的原理、必要性及其怎样调优,还详细介绍怎样操纵ElasticSearch的I/O实际操作总数和怎样确诊ElasticSearch中的难题。第7章详细介绍协助调整查寻中的名字拼写错误及其搭建高效率的全自动进行体制——查寻提议,还根据具体的经典案例怎样根据应用不一样查寻种类和ElasticSearch的别的作用来提升查寻关联性。第8章重中之重诠释ElasticSearch的JAVAAPI。第9章根据演试怎样开发设计你自身的江河和語言解决软件来详细介绍ElasticSearch的软件开发设计。
目录
- 第1章 ElasticSearch简介1
- 1.1 Apache Lucene简介1
- 1.1.1 熟悉Lucene2
- 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 Lucene19
- 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 数据更新API31
- 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章 管理ElasticSearch106
- 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 suggester168
- 7.2 改善查询相关性172
- 7.2.1 数据172
- 7.2.2 改善相关性的探索之旅174
- 7.3 小结188
- 第8章 ElasticSearch Java API189
- 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 GET212
- 8.7.4 Multi Search212
- 8.8 Percolator213
- 8.9 explain API214
- 8.10 构造JSON格式的查询和文档214
- 8.11 管理API216
- 8.11.1 集群管理API216
- 8.11.2 索引管理API219
- 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 测试river238
- 9.3 创建自定义分析插件240
- 9.3.1 实现细节240
- 9.3.2 测试自定义分析插件247
- 9.4 小结249