《深入理解ElasticSearch》——导读
前 言 Preface欢迎来到ElasticSearch的世界。通过阅读本书,我们将带你接触与ElasticSearch紧密相关的各种话题。本书会从介绍Apache Lucene及ElasticSearch的基本概念开始。即使读者熟悉这些知识,简略的介绍也是很有必要的,掌握背景知识对于全面理解集群构建、索引文档、搜索这些操作背后到底发生了什么至关重要。之后,读者将学习Lucene的评分过程是如何工作的,如何影响评分,以及如何让ElasticSearch选择不同的评分算法。本书也将介绍什么是查询重写以及进行查询重写的原因。除此之外,本书还将介绍如何修改查询来影响ElasticSearch的缓存功能以及如何最大限度地使用缓存。接着你将学习索引控制的相关知识:如何通过设置不同的倒排表格式(posting format)来改变索引字段的写入模式;索引的段合并机制和段合并的重要性,以及如何调整段合并来适应应用场景;深入探讨索引分片(shard)的分配机制、路由机制,以及当数据量、查询量日渐增长时的应对策略。当然本书也不会遗漏垃圾收集的相关内容,包括垃圾收集的工作原理、触发时间以及如何调整垃圾收集的行为。此外,本书也将涉及ElasticSearch状态诊断的介绍,例如,描述系统段合并状况,ElasticSearch在高级API背后是如何工作以及如何限制I/O操作的。然而,本书并不仅限于讨论ElasticSearch的底层机制,同时也涵盖了如何改进用户搜索体验,例如处理拼写检查,高效地输入自动提示以及如何改进查询等内容。除了前面介绍的那些,本书还将指导读者熟悉ElasticSearch的Java API,并演示它的使用方法,其中不仅包含CRUD(增删查改)等基本功能,同时也包含集群、索引的维护与操作等高级功能。最后,读者将通过开发一个用于数据索引的自定义river插件,以及一个在检索期和索引期用于数据分析的自定义分析插件来深入了解ElasticSearch的扩展机制。目 录 前言第1章 ElasticSearch简介1.1 Apache Lucene简介[1.2 ElasticSearch简介1.2.1 ElasticSearch的基本概念1.2.2 ElasticSearch架构背后的关概念1.2.3 ElasticSearch的工作流程](https://yq.aliyun.com/articles/107906)1.3 小结[第2章 查询DSL进阶2.1 Apache Lucene默认评分公式解释2.1.1 何时文档被匹配上2.1.2 TF/IDF评分公式2.1.3 ElasticSearch如何看评分](https://yq.aliyun.com/articles/107918)[2.2 查询改写2.2.1 前缀查询范例2.2.2 回顾Apache Lucene2.2.3 查询改写的属性](https://yq.aliyun.com/articles/107930)[2.3 二次评分2.3.1 理解二次评分2.3.2 范例数据2.3.3 查询2.3.4 二次评分查询的结构2.3.5 二次评分参数配置2.3.6 小结](https://yq.aliyun.com/articles/107938)[2.4 批量操作2.4.1 批量取2.4.2 批量查询](https://yq.aliyun.com/articles/107949)[2.5 排序2.5.1 基于多值字段的排序2.5.2 基于多值geo字段的排序2.5.3 基于嵌套对象的排序](https://yq.aliyun.com/articles/107958)[2.6 数据更新API2.6.1 简单字段更新2.6.2 使用脚本按条件更新2.6.3 使用更新 API创建或删除文档](https://yq.aliyun.com/articles/107971)[2.7 使用过滤器优化查询2.7.1 过滤器与缓存2.7.2 词项查找过滤器](https://yq.aliyun.com/articles/107984)[2.8 ElasticSearch切面机制中的过滤器与作用域2.8.1 范例数据2.8.2 切面计算和过滤2.8.3 过滤器作为查询的一部分2.8.4 切面过滤器2.8.5 全局作用域](https://yq.aliyun.com/articles/108004)2.9 小结[第3章 底层索引控制3.1 改变Apache Lucene的评分方式3.1.1 可用的相似度模型3.1.2 为每字段配置相似度模型](https://yq.aliyun.com/articles/108011)[3.2 相似度模型配置3.2.1 选择默认的相似度模型3.2.2 配置被选用的相似度模型](https://yq.aliyun.com/articles/108025)[3.3 使用编解码器3.3.1 简单使用范例3.3.2 工作原理解释3.3.3 可用的倒排表格式3.3.4 配置编解码器](https://yq.aliyun.com/articles/108038)[3.4 准实时、提交、更新及事务日志3.4.1 索引更新及更新提交3.4.2 事务日志3.4.3 准实时读取](https://yq.aliyun.com/articles/108048)[3.5 深入理解数据处理3.5.1 输入并不总是进行文本分析3.5.2 范例的使用3.5.3 索引期更换分词器3.5.4 搜索时更换分析器3.5.5 陷阱与默认分析](https://yq.aliyun.com/articles/108057)[3.6 控制索引合并3.6.1 选择正确的合并策略3.6.2 合并策略配置3.6.3 调度](https://yq.aliyun.com/articles/108070)3.7 小结第4章 分布式索引架构4.1 选择合适的分片和副本数4.1.1 分片和过度分配4.1.2 一个过度分配的正面例子4.1.3 多分片与多索引4.1.4 副本4.2 路由4.2.1 分片和数据4.2.2 测试路由功能4.2.3 索引时使用路由4.2.4 别名4.2.5 多个路由值4.3 调整默认的分片分配行为4.3.1 分片分配器简介4.3.2 even_shard 分片分配器4.3.3 balanced分片分配器4.3.4 自定义分片分配器4.3.5 裁决者4.4 调整分片分配4.4.1 部署意识4.4.2 过滤4.4.3 运行时更新分配策略4.4.4 确定每个节点允许的总分片数4.4.5 更多的分片分配属性4.5 查询执行偏好4.6 应用我们的知识4.6.1 基本假定4.6.2 配置4.6.3 变化来了4.7 小结第5章 管理ElasticSearch5.1 选择正确的目录实现-存储模块5.2 发现模块的配置5.2.1 Zen发现5.2.2 亚马逊EC2发现5.2.3 本地网关5.2.4 恢复配置5.3 索引段统计5.3.1 segments API简介5.3.2 索引段信息的可视化5.4 理解ElasticSearch缓存5.4.1 过滤器缓存5.4.2 字段数据缓存5.4.3 清除缓存5.5 小结第6章 故障处理6.1 了解垃圾回收器6.1.1 Java内存6.1.2 处理垃圾回收问题6.1.3 在类UNIX系统中避免内存交换6.2 关于I/O调节6.2.1 控制IO节流6.2.2 配置6.3 用预热器提升查询速度6.3.1 为什么使用预热器6.3.2 操作预热器6.3.3 测试预热器6.4 热点线程6.4.1 澄清热点线程API的用法误区6.4.2 热点线程API的响应信息6.5 现实场景6.5.1 越来越差的性能6.5.2 混杂的环境和负载不平衡6.5.3 我的服务器出故障了6.6 小结第7章 改善用户搜索体验7.1 改正用户拼写错误7.1.1 测试数据7.1.2 深入技术细节7.1.3 completion suggester7.2 改善查询相关性7.2.1 数据7.2.2 改善相关性的探索之旅7.3 小结第8章 ElasticSearch Java API8.1 ElasticSearch Java API简介8.2 代码1908.3 连接到集群8.3.1 成为ElasticSearch节点8.3.2 使用传输机连接方式8.3.3 选择合适的连接方式8.4 API剖析8.5 CRUD操作8.5.1 读取文档8.5.2 索引文档8.5.3 更新文档8.5.4 删除文档8.6 ElasticSearch查询8.6.1 准备查询请求8.6.2 构造查询8.6.3 分页8.6.4 排序8.6.5 过滤8.6.6 切面计算8.6.7 高亮8.6.8 查询建议8.6.9 计数8.6.10 滚动8.7 批量执行多个操作8.7.1 批量操作8.7.2 根据查询删除文档8.7.3 Multi GET8.7.4 Multi Search8.8 Percolator8.9 explain API8.10 构造JSON格式的查询和文档8.11 管理API8.11.1 集群管理API8.11.2 索引管理API8.12 小结第9章 开发ElasticSearch插件9.1 建立Apache Maven项目结构9.1.1 了解基本知识9.1.2 Maven Java项目的结构9.1.3 POM的理念9.1.4 运行构建过程9.1.5 引入Maven装配插件9.2 创建一个自定义river插件9.2.1 实现细节9.2.2 测试9.3 创建自定义分析插件9.3.1 实现细节9.3.2 测试自定义分析插件9.4 小结
9532
文章数
1248
粉丝数
0
关注的人
网友评论