深入理解Elasticsearch(原书第3版)
从设计原理、部署调优、高级特性、扩展开发等方面助你全面进阶
基本信息
- 作者: (印度)波哈维·荻西特(Bharvi Dixit)
- 丛书名: 云计算与虚拟化技术丛书
- 出版社:机械工业出版社
- ISBN:9787111643074
- 上架时间:2019-12-19
- 出版日期:2019 年12月
- 开本:16开
- 页码:298
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > 综合 > 高级程序语言设计

【插图】

编辑推荐
资深软件开发专家、架构师撰写,系统且深入阐释Elasticsearch涉及的工具、方法、原则和实践
从设计原理、部署调优、高级特性、扩展开发等方面助你全面进阶
内容简介
作译者
目录
前言
致谢
作者简介
审阅者简介
第1章 回顾Elasticsearch与演进历史 1
1.1 Apache Lucene简介 1
1.1.1 更深入地了解Lucene索引 2
1.1.2 Elasticsearch概览 7
1.2 Elasticsearch 5.x介绍 8
1.2.1 Elasticsearch新特性简介 9
1.2.2 Elasticsearch的演进 10
1.2.3 2.x到5.x的变化 14
1.3 小结 16
第2章 查询DSL进阶 17
2.1 Lucene的新默认文本评分机制——BM25 17
2.1.1 理解精确率与召回率 18
2.1.2 回顾TF-IDF 18
2.1.3 BM25与TF-IDF有什么不同 21
2.2 查询DSL重构 22
前言
本书将探讨与Elasticsearch和Lucene相关的各方面内容。首先简单介绍一下Lucene和Elasticsearch,带你了解Elasticsearch提供的各种查询方法。在这里会涉及与查询相关的不同主题,比如结果过滤、在特定场景下如何选择合适的查询方式等。Elasticsearch当然并非只具备查询功能,本书还将介绍Elasticsearch新引入的聚合功能以及其他特性,帮你挖掘出被索引数据的价值,并为用户提供更好的查询体验。
在与Elasticsearch脚本模块相关的章节中,也将讨论在Elasticsearch中进行数据建模和处理关系型数据的方法,同时也会展示一些用新的默认脚本语言Painless写成的例子。
对大多数用户来说,查询和数据分析是Elasticsearch最吸引人的部分,不过这些并不是本书讨论的全部内容。因此在索引架构的部分,本书还会试图与读者探讨一些额外的话题,比如如何选择合适的分片数和副本数、如何调整分片分配方式等。在讨论Elasticsearch和Lucene之间的关系时,还将介绍不同的评分算法、如何选择合适的存储机制、它们之间的差异、为什么做出合适的选择很重要等。
Elasticsearch的管理功能虽然被放在了最后讨论,但同样重要。这一部分内容包括发现模块和恢复模块,以及对人类友好的Cat API——使用它可以快速获取管理命令的结果,并将返回的JSON格式数据以人类易于阅读的格式展现,无须再次转换。我们还将讨论ingest节点,它可以在生成索引之前就对Elasticsearch中的数据进行预处理,以及如何利用部落节点来完成在多个节点之间进行联合搜索的功能。
看书名就知道,本书不会错过与性能相关的话题,会用整整一章来专门讨论它。
与本书第2版一样,也有一章专门讨论Elasticsearch插件的开发。展示如何构建Apache Maven项目,并开发两个不同类型的插件——自定义REST操作插件和自定义分析插件。
最后一章将讨论完整的Elastic Stack所包含的全部组件,读后会对如何开始使用Logstash、Kibana和Beats等工具有大致的了解。
读过上述内容之后,如果对某些内容产生了兴趣,那么这本书就是适合的。希望读者在读完整本书之后,会喜欢它。
本书主要内容
第1章先介绍了Apache Lucene的工作方式,再介绍Elasticsearch 5.x。主要关注基本概念以及Elasticsearch在从1.x到5.x的演进过程中发生的重要功能变化。
第2章讲解新的默认评分算法BM25,以及它与之前的TF-IDF算法相比的优点。另外还讲解了Elasticsearch的各种功能,如查询改写、查询模板、查询模块的变化,以及在特定场景下可以选择的不同查询方法,等等。
第3章讲述了多匹配控制、二次评分、函数评分查询等查询相关功能。这一章也包括Elasticsearch的脚本模块相关内容。
第4章讨论了在Elasticsearch中进行数据建模的不同方法,以及在真实场景中如何用parent-child关系和嵌套数据类型来处理文档之间的关系。这一章还进一步讨论了用于数据分析的Elasticsearch聚合模块。
第5章关注通过查询建议器(suggester)提升用户搜索体验的话题,它可以改正查询语句中的拼写错误,提供高效的自动补齐功能。本章内容还包括如何提高查询相关性,如何使用同义词进行搜索等。
第6章的主要内容包括选择正确的分片数和副本数、路由是怎么工作的、分片分配是怎么工作的、如何影响分片行为等。本章还讨论了查询执行偏好是什么,以及它是怎样影响查询执行的。
第7章讲述如何更改Apache Lucene的评分机制,以及如何选择备用的评分算法。本章还包括准实时搜索、索引和事务日志的使用,理解索引的段合并机制,再基于Elasticsearch 5.x的删除合并策略细节,就可以根据场景来进行调优了。在本章的最后,还可以了解IO节流(IO Throttling)和Elasticsearch的缓存机制。
第8章关注与管理Elasticsearch相关的内容。其中介绍了什么是发现模块、网关模块和恢复模块,并讲解了如何配置它们,以及为什么值得如此大费周章地配置它们。本章还介绍了什么是Cat API、如何备份数据并恢复到不同云服务上(亚马逊AWS、微软Azure等)。
第9章讲述了Elasticsearch 5的最新特性——ingest节点,用它可以先对数据进行预处理,再在Elasticsearch中生成索引。本章也讲到了联盟搜索使用部落节点在不同的集群之间完成搜索的工作原理。
第10章讨论在不同的负载下如何提升性能、扩展生产集群的正确方法、垃圾回收原理、热点线程问题等以及如何应对它们,并进一步讨论了查询分析和查询基准测试。本章最后针对高查询量和高索引吞吐率这些不同场景,给出了一些Elasticsearch集群的调优建议。
媒体评论
本书先简单回顾基本知识,然后详细讲述Elasticsearch的中级和高级功能,比如查询、索引、搜索和修改数据。此外,还介绍许多高级概念,包括聚合、索引控制、分片、复制和集群等。
本书也会介绍Elasticsearch的监控和管理模块,包括备份和恢复。你将了解在特定的场景下,如何扩展Elasticsearch集群并提升它的性能。书中还会演示如何在Elasticsearch中创建分析插件。
通过阅读本书,你将学到:
理解Apache Lucene和Elasticsearch 5的设计与架构。
使用和配置Apache Lucene 6的默认文本评分机制。
在用Elasticsearch处理关系型数据时如何避免遇到陷阱。
如何根据不同的用例选择合适的查询,并使用脚本模块,包括新的默认脚本语言Painless。
探索扩展生产集群的正确方法,提升Elasticsearch的性能。
管理Elasticsearch的搜索、索引和聚合特性。
开发自己的Elasticsearch插件,扩展Elasticsearch的功能。