书籍内容
本书详细阐述了与Elasticsearch 7.0相关的基本解决方案,主要包括管理映射、搜索功能详解、文本和数字查询、关系和地理查询、聚合、Elasticsearch中的脚本、管理集群、备份和还原数据、用户界面、使用采集模块、Java集成、Scala集成、Python集成、插件开发、大数据集成等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
前言/序言
前 言
Elasticsearch是基于Lucene的分布式搜索服务器,它允许用户使用PB级的数据对非结构化内容进行索引和搜索。在本书中,读者将学习到有关Elasticsearch 7.0的全面操作秘笈,并了解如何创建和运行复杂的查询和分析。
本书是Elasticsearch Cookbook一书的第4版,包含有关使用Elasticsearch执行索引映射、聚合和脚本编写的秘笈,以帮助读者掌握用于执行日常任务和非常规任务(例如,部署Elasticsearch节点、集成其他工具到Elasticsearch,以及创建不同的可视化结果等)的众多解决方案和快速技术。读者将学习到如何安装Kibana来监视集群,以及如何使用各种插件对Elasticsearch进行扩展。最后,本书还介绍了如何将Java、Scala、Python和大数据应用程序(例如Apache Spark和Pig)与Elasticsearch集成在一起,从而创建由增强功能和自定义插件提供支持的高效数据应用程序。
通读本书之后,你将获得有关实现Elasticsearch架构的深入知识,并且能够使用Elasticsearch有效地管理、搜索和存储数据。
本书读者
如果你是软件工程师、大数据基础架构工程师或Elasticsearch开发人员,你会发现本书对你很有用。本书还将帮助在电子商务和快速消费品(FMCG)行业工作的数据专业人员,他们可以使用Elastic进行指标评估和搜索分析,以获取更深刻的见解,从而做出更好的业务决策。
如果你已经拥有使用Elasticsearch的经验,那么这将有助于你充分利用本书。
内容介绍
第1章“入门”,讨论了使用Elasticsearch的基本步骤,包括简单安装和云端部署。本章还介绍了若干种设置案例。
第2章“管理映射”,详细介绍了数据字段的正确定义,以提高索引和搜索的质量。
第3章“基本操作”,介绍了在Elasticsearch中提取数据并进行管理所需的常见操作。
第4章“搜索功能详解”,讨论了执行搜索、排序和相关API调用。本章讨论的API是必不可少的。
第5章 “文本和数字查询”,介绍了文本和数字字段的Search DSL部分,这是Elasticsearch
搜索功能的核心。
第6章“关系和地理查询”,讨论了可在相关文档(子文档/父文档和嵌套文档)和地理位置字段上使用的查询。
第7章“聚合”,详细介绍了Elasticsearch的另一功能,即可以对搜索结果执行分析以改善用户体验,并深入研究Elasticsearch中包含的信息。
第8章“Elasticsearch中的脚本”,演示了如何使用脚本自定义Elasticsearch,以及如何使用不同的语言在Elasticsearch的不同部分(搜索、聚合和采集)使用脚本功能。本章的重点是Elastic团队开发的新脚本语言Painless。
第9章“管理集群”,显示了如何分析集群/节点的行为以了解常见的陷阱。
第10章“备份和还原数据”,讨论了管理数据中最重要的组成部分之一:备份。它显示了如何管理分布式备份和快照的还原。
第11章“用户界面”,介绍了Elasticsearch两个最常见的用户界面:Cerebro(主要用于管理活动)和Kibana,另外,X-Pack是Elasticsearch的常见UI扩展。
第12章“使用采集模块”,讨论了通过采集管道在Elasticsearch中导入数据的采集功能。
第13章“Java集成”,介绍了如何使用REST和原生协议将Elasticsearch集成到Java应用程序中。
第14章“Scala集成”,介绍了如何使用elastic4s将Elasticsearch集成到Scala中。
elastic4s是一种基于原生Java API的高级类型安全且功能丰富的Scala库。
第15章“Python集成”,介绍了官方Elasticsearch Python客户端的用法。
第16章“插件开发”,讨论了如何创建原生插件以扩展Elasticsearch功能。本章通过一些示例显示了插件框架、设置过程以及它们的构建。
第17章“大数据集成”,介绍了如何将Elasticsearch集成到常见的大数据工具中,例如Apache Spark和Apache Pig。
充分利用本书
如果读者对Java、Scala和Python有基本了解,那么这对于充分利用本书将是有益的。
下载示例代码文件
读者可以从www.packtpub.com下载本书的示例代码文件。具体步骤如下。
(1)登录或注册www.packtpub.com。
(2)选择Support(支持)选项卡。
(3)单击Code Downloads&Errata(代码下载和勘误表)。
(4)在Search(搜索)框中输入图书名称Elasticsearch 7.0 Cookbook,然后按照屏幕上的说明进行操作。
下载文件后,请确保使用最新版本解压缩或解压缩文件夹:
WinRAR/7-Zip(Windows系统)。
Zipeg/iZip/UnRarX(Mac系统)。
7-Zip/PeaZip(Linux系统)。
本书的代码包也已经在GitHub上托管,网址如下,欢迎访问:
https://github.com/PacktPublishing/Elasticsearch-7.0-Cookbook
如果代码有更新,则也会在现有GitHub存储库上更新。
下载彩色图像
我们还提供了一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像。可以通过以下地址下载:
https://www.packtpub.com/sites/default/files/downloads/9781789956504_ColorImages.pdf
本书约定
本书中使用了许多文本约定。
(1)CodeInText:表示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄等。以下段落就是一个示例:
有关Python Elasticsearch客户端的官方说明文档提供了有关可用于初始化客户端的多个选项的更详细说明。其网址如下:
https://elasticsearch-py.readthedocs.io/en/master/index.html
(2)有关代码块的设置如下所示:
PUT /myindex
{
"settings": {
"index": {
"number_of_shards": 2,
"number_of_replicas": 1
}
}
}
(3)当希望引起读者对代码块的特定部分的注意时,相关的行或项目以粗体显示:
searchSourceBuilder.query(query).size(30);
SearchRequest searchRequest = new SearchRequest()
.indices(index).source(searchSourceBuilder)
.scroll(TimeValue.timeValueMinutes(2));
(4)任何命令行输入或输出都采用如下所示的粗体代码形式:
[2019-02-05T21:15:36,311][INFO ][o.e.p.PluginsService ]
[iMacParo.local] loaded plugin [rest-plugin]
[2019-02-05T21:15:38,736][INFO ][o.e.x.s.a.s.FileRolesStore]
[iMacParo.local]
parsed [0] roles from file [/Users/alberto/elasticsear
(5)粗体:术语或重要单词使用粗体显示,并且在括号内保留其英文原文。对于菜单或对话框中的界面词汇,则以原文形式出现,并使用括号添加其中文翻译,方便读者对照查看。示例如下:
传输操作通常定义为映射(Map)和归约(Reduce)作业。
在使用Kibana之前,建议加载一些数据集,这些数据集是在安装中提供的。只需单击Add sample data(添加样本数据)标题下的Load a data set and a Kibana dashboard(加载数据集和Kibana仪表盘)即可打开Add Data to Kibana(添加数据到Kibana)页面。
(6)本书还使用了以下两个图标。
表示警告或重要的注意事项。
表示提示或小技巧。
关于作者
Alberto Paro是一名工程师、项目经理和软件开发人员。他目前在意大利NTTDATA担任大数据实践负责人,负责大数据技术、本地云和NoSQL解决方案。他喜欢研究与云和大数据处理、NoSQL数据库、自然语言处理(NLP)和神经网络有关的新兴解决方案和应用程序。2000年,他毕业于米兰理工大学计算机科学工程系。他曾经在多家公司工作,主要使用Scala/Java和Python来开发知识管理解决方案,并使用最新的大数据软件开发高级数据挖掘产品。他还花费了大量的时间讲授如何有效使用大数据解决方案、NoSQL数据存储和相关技术。
“如果没有很多人的支持,那么我将很难完成这本书。首先,我要感谢我的妻子、孩子(Andrea和Giulia)以及全家人对我的支持。我还要对我最好的朋友Mauro和Michele、我的同事以及所有帮助过我和我的家人的人们表示感谢。我要感谢Packt Publishing出版社参与本书开发和制作的每个人。感谢Athikho Sapuni Rishana对于本书给予的指导,感谢审稿人耐心地阅读了初稿并提供了宝贵的反馈意见。他们的专业精神、谦逊有礼、良好的判断力和对书籍的热情令人深表感佩。”
关于审稿人
Craig Brown是一名独立顾问,为Elasticsearch和其他大数据软件提供服务。他拥有25年以上的Java核心开发经验,以及十多年的Elasticsearch经验。他在机器学习、Hadoop和Apache Spark方面也有良好的实践经验,并且是美国犹他州Big Mountain Data用户组的联合创始人。他是Elasticsearch和其他大数据主题的发言人。Craig创立了NosqlRevolution LLC,专注于Elasticsearch和大数据服务。他还创立了PicoCluster LLC,这是一个桌面数据中心,致力于对集群计算和大数据框架进行原型化。