《深入理解Elasticsearch(原书第2版)》一导读-阿里云开发者社区

开发者社区> 华章出版社> 正文

《深入理解Elasticsearch(原书第2版)》一导读

简介: 欢迎来到Elasticsearch的世界并阅读本书第2版。通过阅读本书,我们将带领你接触与Elasticsearch紧密相关的各种话题。请注意,本书不是为初学者写的。笔者将本书作为《Elasticsearch Server, Second Edition》的续作和姊妹篇。


88e5da8f8018aecd587514c7d37debf2fced10f6

Preface 前  言

欢迎来到Elasticsearch的世界并阅读本书第2版。通过阅读本书,我们将带领你接触与Elasticsearch紧密相关的各种话题。请注意,本书不是为初学者写的。笔者将本书作为《Elasticsearch Server, Second Edition》的续作和姊妹篇。相对于《Elasticsearch Server》,本书涵盖了很多新知识,不过你偶尔也可以在本书中发现一些引自《Elasticsearch Server》的内容。
本书将探讨与Elasticsearch和Lucene相关的多个不同主题。首先,我们以介绍Lucene和Elasticsearch的基本概念作为开始,带领读者认识Elasticsearch提供的众多查询方式。在这里,将涉及和查询相关的不同主题,比如结果过滤以及如何为特定场景选择合适的查询方式。显然,Elasticsearch不仅仅只有查询功能。因此,本书还将介绍Elasticsearch新加入的聚集功能,以及众多能够赋予被索引数据意义的特性,并设法提供更佳的用户查询体验。
对大多数用户来说,查询和数据分析是Elasticsearch最吸引人的部分,不过这些还不是我们想要探索的全部内容。因此,本书在涉及索引架构时还会试图跟读者探讨一些额外话题,比如如何选择合适的分片数和副本数,如何调整分片分配行为等。当谈论Elasticsearch和Lucene之间的关系时,我们还将介绍不同的打分算法、算法之间的差异、如何选择合适的存储机制,以及为什么需要做此选择。
最后,我们还将触及Elasticsearch的管理功能,将探讨发现和恢复模块,以及对人类友好的Cat API。Cat API可以帮助我们快速获取相关的运维信息,它的返回数据组织成一种大多数人都易于阅读的格式,无需进行JSON解析。我们还将认识和使用部落节点,它能够为我们提供在多个节点间联合查询的能力。
因为本书的书名,我们无法忽略与性能相关的话题,所以我们决定用整整一章来探讨性能。我们谈论了文档取值及其相关改进,还介绍了垃圾回收器的工作方式,以及在垃圾回收器未能如我们期望般工作时可以做些什么。最后,探讨了如何扩展Elasticsearch以应对高索引量和查询量的场景。
和本书第1版一样,我们决定以开发Elasticsearch插件的话题作为本书结尾。我们将展示如何构建Apache Maven项目,并开发两个不同类型的插件—自定义REST操作插件和自定义分析插件。
假如你在读完某些主题后对其产生浓厚的兴趣,那么这本书就是适合你的。希望你在读完后能够喜欢这本书。
本书主要内容
第1章先介绍Apache Lucene的工作方式,再介绍Elasticsearch的基本概念,并演示Elasticsearch内部是如何工作的。
第2章描述Lucene评分过程,为什么要进行查询改写,什么是查询模板以及如何使用查询模板。除此之外,还介绍了过滤器的使用,以及如何为特定场景选择合适的查询方式。
第3章描述了查询二次评分、多匹配控制,并介绍了用于做查询分析的各种聚合类型。关键词项聚合和最优词项聚合可以根据所含内容片段对文档进行归类。除此之外,还介绍了Elasticsearch的parent-child文档关系处理,并提供了在Elasticsearch中使用脚本的相关知识。
第4章覆盖了有关用户体验提升的相关话题。本章介绍了查询建议(suggester),它能帮助修正查询中的拼写错误并构建高效的自动完成(autocomplete)机制。除此之外,通过实际的案例展示如何通过使用不同查询类型和Elasticsearch的其他功能来提高查询相关性。
第5章介绍了以下技术:如何选择合适的分片及副本数,路由是如何工作的,索引分片机制是如何工作的以及如何影响分片行为。同时介绍了什么是查询执行偏好,以及它是如何影响查询执行的。
第6章描述如何修改Lucene评分以及如何选择备用的评分算法。本章也介绍了Elasticsearch的准实时搜索和索引,事务日志的使用,理解索引的段合并,以及如何调整段合并来适应应用场景。在本章最后,还将介绍Elasticsearch的缓存机制和请求打断器,以避免出现内存用尽的故障。
第7章介绍了什么是发现、网关、恢复模块,如何配置这些模块,以及有哪些令人心烦的疑难点。还介绍了什么是Cat API,如何把数据备份到各种云服务上(比如亚马逊的AWS和微软的Azure),以及如何从云服务上恢复数据。最后还介绍了如何使用部落节点进行联盟搜索。
第8章覆盖了与Elasticsearch性能相关的各种主题,从使用文档取值来优化字段数据缓存的内存使用,到JVM垃圾回收器的工作原理,再到查询基准测试,最后到如何扩展Elasticsearch以适应更高的索引量和查询量场景。
第9章通过演示如何开发你自己的REST操作插件和查询语言分析插件来介绍Elasticsearch的插件开发。

目录

译者序
作者简介
评审者简介
前言
第1章 Elasticsearch简介
1.1 Apache Lucene简介
1.1.1 熟悉Lucene
1.1.2 Lucene的总体架构
1.1.3 分析数据
1.1.4 Lucene查询语言
1.2 何为Elasticsearch
1.2.1 Elasticsearch的基本概念
1.2.2 Elasticsearch架构背后的关键概念
1.2.3 Elasticsearch的工作流程
1.3 在线书店示例
1.4 小结
第2章 查询DSL进阶
2.1 Apache Lucene默认评分公式解释
2.1.1 何时文档被匹配上
2.1.2 TF/IDF评分公式
2.1.3 Elasticsearch如何看评分
2.1.4 一个例子
2.2 查询改写
2.2.1 前缀查询示例
2.2.2 回到Apache Lucene
2.2.3 查询改写的属性
2.3 查询模板
2.3.1 引入查询模板
2.3.2 Mustache模板引擎
2.3.3 把查询模板保存到文件
2.4 过滤器的使用及作用原理
2.4.1 过滤及查询相关性
2.4.2 过滤器的工作原理
2.4.3 性能考量
2.4.4 后置过滤和过滤查询
2.4.5 选择正确的过滤方式
2.5 选择正确的查询方式
2.5.1 查询方式分类
2.5.2 使用示例
2.6 小结
第3章 不只是文本搜索
3.1 查询二次评分
3.1.1 什么是查询二次评分
3.1.2 一个查询例子
3.1.3 二次评分查询的结构
3.1.4 二次评分参数
3.1.5 总结
3.2 多匹配控制
3.3 重要词项聚合
3.3.1 一个例子
3.3.2 选择重要词项
3.3.3 多值分析
3.3.4 额外的配置
3.3.5 使用限制
3.4 文档分组
3.4.1 top_hits聚合
3.4.2 一个例子
3.5 文档关系
3.5.1 对象类型
3.5.2 嵌套文档
3.5.3 parent-child关系
3.5.4 其他解决方案
3.6 Elasticsearch各版本中脚本的变化
3.6.1 脚本变迁
3.6.2 Groovy简单介绍
3.6.3 全文检索中的脚本
3.6.4 Lucene表达式
3.7 小结
第4章 改善用户搜索体验
4.1 改正用户拼写错误
4.1.1 测试数据
4.1.2 深入技术细节
4.1.3 suggester
4.2 改善查询相关性
4.2.1 数据
4.2.2 改善相关性的探索之旅
4.3 小结
第5章 分布式索引架构
5.1 选择合适的分片和副本数
5.1.1 分片和过度分配
5.1.2 一个过度分配的正面例子
5.1.3 多分片与多索引
5.1.4 副本
5.2 路由
5.2.1 分片和数据
5.2.2 测试路由功能
5.2.3 索引时使用路由
5.2.4 别名
5.2.5 多个路由值
5.3 调整默认分片的分配行为
5.3.1 部署意识
5.3.2 过滤
5.3.3 运行时更新分配策略
5.3.4 确定每个节点允许的总分片数
5.3.5 确定每个物理机器允许的总分片数
5.4 查询执行偏好
5.5 小结
第6章 底层索引控制
6.1 改变Apache Lucene的评分方式
6.1.1 可用的相似度模型
6.1.2 为每字段配置相似度模型
6.1.3 相似度模型配置
6.1.4 选择默认的相似度模型
6.2 选择适当的目录实现—store模块
6.3 准实时、提交、更新及事务日志
6.3.1 索引更新及更新提交
6.3.2 事务日志
6.3.3 准实时读取
6.4 控制索引合并
6.4.1 选择正确的合并策略
6.4.2 合并策略配置
6.4.3 调度
6.5 关于I/O调节
6.5.1 控制I/O节流
6.5.2 配置
6.6 理解Elasticsearch缓存
6.6.1 过滤器缓存
6.6.2 字段数据缓存
6.6.3 查询分片缓存
6.6.4 使用circuit breaker
6.6.5 清除缓存
6.7 小结
第7章 管理Elasticsearch
7.1 发现和恢复模块
7.1.1 发现模块的配置
7.1.2 主节点
7.1.3 网关和恢复模块的配置
7.1.4 索引恢复API
7.2 使用人类友好的Cat API
7.2.1 基础知识
7.2.2 使用Cat API
7.2.3 一些例子
7.3 备份
7.4 联盟搜索
7.4.1 测试用的集群
7.4.2 建立部落节点
7.4.3 通过部落节点读取数据
7.4.4 通过部落节点写入数据
7.4.5 处理索引冲突
7.4.6 屏蔽写操作
7.5 小结
第8章 提高性能
8.1 使用doc values来优化查询
8.1.1 字段缓存存在的问题
8.1.2 使用doc values的例子
8.2 了解垃圾回收器
8.2.1 Java内存
8.2.2 解决垃圾回收问题
8.2.3 在类UNIX系统上避免内存交换
8.3 对查询做基准测试
8.3.1 为基准测试配置集群
8.3.2 进行基准测试
8.3.3 控制运行中的基准测试
8.4 热点线程
8.4.1 热点线程的使用说明
8.4.2 热点线程API的响应
8.5 扩展Elasticsearch
8.5.1 垂直扩展
8.5.2 水平扩展
8.5.3 在高负载的场景下使用Elasticsearch
8.6 小结
第9章 开发Elasticsearch插件
9.1 创建Maven项目
9.2 了解基本知识
9.2.1 Maven Java项目的结构
9.2.2 POM的理念
9.2.3 执行构建过程
9.2.4 引入Maven装配插件
9.3 创建自定义REST行为
9.3.1 设定
9.3.2 实现细节
9.4 创建自定义分析插件
9.4.1 实现细节
9.4.2 测试自定义分析插件
9.5 小结

版权声明:如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developerteam@list.alibaba-inc.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接