《Elasticsearch in Action》书评与作者访谈

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

如今,企业淹没在系统生成的浩瀚数据流当中。大数据技术业已集中在如何存储和处理这些海量的数据上。虽然离线数据的批处理非常重要,但我们通常需要对相应的实时数据做出明智的判断。这就是搜索引擎的用武之地,siteber.com将其描述为“最具活力的行业”:

搜索引擎行业在过去几年的成长,已经足以巩固其在美国最具创新性行业之一的地位。

于是乎,ElasticsearchApache Solr这两款当世领先的开源搜索引擎,正在享受着更广泛的使用,吸引着更多人的关注。Gheorghe、Hinman和Russo所著的新书《Elasticsearch in Action》是一本非常好的书,简洁地一步步介绍了搜索,解释了Elasticsearch是如何实现搜索功能的,并提供很多代码示例。这本书还深入讲述了Elasticsearch的管理和配置,强调了索引和搜索性能之间的权衡。

这本书的主要内容分为两部分:“核心功能”和“高级功能”,随后是几个附录,覆盖了非常重要但不通用的功能(只适用于一些特殊的应用场景)。

本书的第一部分描述了Elasticsearch核心构建块及其功能。覆盖了Elasticsearch建模和索引数据的主要功能和方法,它们将用于支持基于应用系统的查询和分析。

  • 第一章介绍了通用搜索引擎的功能,及其在Elasticsearch中的实现。这章的最后介绍了Elasticsearch的安装,用于运行全书提供的示例。
  • 第二章讲述了Elasticsearch服务器中的数据组织,包括逻辑数据模型(搜索应用与Elasticsearch交互的方式)和物理布局(服务器内部处理数据的方式)。接下来,展示了这种数据模型是如何运用于典型的操作场景之中,即索引文档、查询文档、通过聚合分析数据,并水平扩展到多个节点上。
  • 第三章详述了从Elasticsearch读写数据和维护数据的细节:索引、更新和删除文档。通过分析文档的字段,详述了索引过程;向读者讲述了当我们写入时,都包含哪些内容,会发生什么事情。
  • 第四章详述了全文搜索,包括主要的查询器和过滤器、它们的内部工作机制,以及各种搜索方法的权衡。本章的最后,演示了一些最常用的过滤器和查询器,并解释了它们对于不同应用场景的适用性。
  • 第五章阐述了如何将文档和查询器中的文本,分析和拆分为用于搜索的词条。本章介绍了Elasticsearch提供的不同类型的分析器,并说明了如何构建我们自己的分析器,以充分利用Elasticsearch的全文搜索潜能。本章还介绍了用于解决复杂搜索业务的Ngrams、Shingles和Stemming。
  • 第六章关注于相关性计算,也就是打分(score),它定义了文档对原始查询的相关性。本章描述了影响文档打分的因素及其维护方式——使用不同的打分算法、调整指定查询器或者字段的boost值。本章还展示了Elasticsearch中,用于计算打分的API。
  • 第七章展示了如何使用聚合来执行实时数据分析。在Elasticsearch中的具体做法是,加载文档、匹配搜索条件,以及执行各种排序计算,比如统计字符类型字段中词项的数量,或者计算数值类型字段的平均值。聚合被分为两种:度量和桶。度量聚合是指对一组文档进行静态分析,得到度量值,比如最小值、最大值、均方差等。桶式聚合将匹配的文档拆分进一个或多个桶容器,然后告诉你每个桶里有多少文档。
  • 第八章是第一部分的最后一章,讲述了Elasticsearch对关系的支持。本章讨论了Elasticsearch提供的处理关系的几种常见方法,包括对象类型、嵌套文档、父子关系和一般的非规范化。同时,说明了如何使用每一种方法,以及它的优点和缺点。

本书的第二部分讲述了如何在生产环境中使用Elasticsearch。书中提供了每种功能的工作原理,及其对性能和稳定性的影响:

  • 第九章讲述了水平扩展Elasticsearch到多个节点。包括增加、删除、解除节点、选举Master的过程和分片迁移的机制。还深入分析了扩展的策略,包括索引分片和副本的最佳实践,比如,使用Oversharding或者基于时间的索引来确保当前的设计可以处理明年的数据。此外,还说明了如何使用索引别名和路由来提高集群的灵活性和可扩展性。在本章的最后,演示了如何使用Elasticsearch的API展示集群的状态和健康状况。
  • 第十章讲述了多种提高集群性能的办法。首先是如何将多个请求,比如index、update、delete、get和search合并成一次HTTP调用。这种分组通过最小化网络往返流量,可以大幅提高应用的性能。接着是Elasticsearch如何处理Lucene(底层搜索库)段:如何设置读写的刷新(refresh和flush)、合并策略和存储,这些设置对索引和搜索性能有何影响,以及在索引和搜索之间性能调优的权衡。本章的最后,讨论了影响Elasticsearch速度的一个重要的因素,缓存。详述了过滤器缓存的细节和最佳实践。还讲述了分片查询缓存,以及如何在预留足够的空间给Elasticsearch堆空间的同时,给操作系统足够的空间去缓存索引。
  • 第十一章讲述了监控和管理生产集群。包括额外的设置方法、简化集群管理,以及监控生产环境必要的度量指标。最后,讨论了备份和恢复一个数据节点。

六个附录包含了有关Elasticsearch的更多信息:

  • 附录A是关于地理空间搜索的。它可以为应用带来位置感知能力。Elasticsearch支持存储位置信息(点和多边形)和通用的空间操作,比如两点间距离、图形包含点、图形间重叠等计算。附录演示了如何在搜索中使用这一功能。
  • 附录B是讲如何管理Elasticsearch插件的。插件是一种开箱即用的,能为Elasticsearch带来扩展和增强功能的强大方式。附录中介绍了两种类型的插件。一种是site插件,没有额外的功能,只是为Elasticsearch提供了网页服务。另一种是code插件,可以是任何包含JVM代码、能被Elasticsearch执行的插件。附录讲述了如何安装、使用和卸载插件。
  • 附录C是关于Highlighting选项及其实现的。Highlighting指示为什么文档出现再查询结果中,匹配的词项被加上强调样式,让用户感受到文档是说什么的,以及和查询之间的关系。
  • 附录D是关于监控插件的。Elasticsearch社区提供了很多监控插件,可以通过引人入胜的图形界面,更容易地管理集群的状态、索引,以及执行查询。
  • 附录E是关于如何使用Elasticsearch渗滤器(percolator)的。渗滤器通常被定义为『搜索倒置』。渗滤器索引的是查询信息而不是索引文档。将查询注册并存储到内存当中,以便日后快速执行。使用渗滤器时,我们发送给Elasticsearch的是文档,而不是查询信息。这被称为渗滤文档,基本上会对其索引到小内存索引上。Elasticsearch根据小索引从已然注册的查询信息中查询,并返回匹配的查询信息。
  • 最后,附录F是关于建议器(suggester)的。附录解释了如何使用不同的建议器实现用户意图的自动补全功能。这里所描述的基本功能,包括词项和短语的建议、补全和上下文的建议。附录描述了各种建议器和Elasticsearch中与此功能相关的API。
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
6月前
|
运维 架构师 搜索推荐
7 年+积累、 Elastic 创始人Shay Banon 等 15 位专家推荐的 Elasticsearch 8.X新书已上线...
7 年+积累、 Elastic 创始人Shay Banon 等 15 位专家推荐的 Elasticsearch 8.X新书已上线...
84 4
|
6月前
|
人工智能 Java API
如何在 Elasticsearch 论坛/社群上提出高质量的技术问题?
如何在 Elasticsearch 论坛/社群上提出高质量的技术问题?
46 0
|
存储 数据采集 缓存
浅述Elasticsearch开发规范指南(持续更新)(下)
Elasticsearch 是一款流行的分布式开源搜索和数据分析引擎,具备高性能、易扩展、容错性强等特点。它强化了 Apache Lucene 的搜索能力,把掌控海量数据索引和查询的方式提升到一个新的层次。 本文将根据ElasticSearch的特点和日常开发中的经验,整理了在日常使用ElasticSearch进行开发的一些最佳实践。
|
存储 缓存 自然语言处理
浅述Elasticsearch开发规范指南(持续更新)(上)
Elasticsearch 是一款流行的分布式开源搜索和数据分析引擎,具备高性能、易扩展、容错性强等特点。它强化了 Apache Lucene 的搜索能力,把掌控海量数据索引和查询的方式提升到一个新的层次。 本文将根据ElasticSearch的特点和日常开发中的经验,整理了在日常使用ElasticSearch进行开发的一些最佳实践。
|
存储 SQL JSON
白日梦的Elasticsearch系列笔记(一)基础篇-- 快手上手ES (一)
白日梦的Elasticsearch系列笔记(一)基础篇-- 快手上手ES (一)
389 0
|
存储 JSON 自然语言处理
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(2)
Kibana是一个针对Elasticsearch的开源分析及可视化平台,使用Kibana可以查询、查看并与存储在ES索引的数据进行交互操作,使用Kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据。Kibana与Elasticsearch版本保持严格一致。
157 0
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(2)
|
缓存 自然语言处理 搜索推荐
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(3)
ElasticSearch中采用标准分词器进行分词,这种方式并不适用于中文网站。因此需要修改ElasticSearch对中文友好分词,从而达到更佳的搜索的效果。而支持中文分词的分词器就是IK分词器。
231 0
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(3)
|
存储 JSON 自然语言处理
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(1)
全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置。当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程。
263 0
💖每天拿出20分钟,带你入门涨薪3k的ElasticSearch全文搜索引擎(1)
|
SQL JSON 关系型数据库
白日梦的Elasticsearch系列笔记(一)基础篇-- 快手上手ES (二)
白日梦的Elasticsearch系列笔记(一)基础篇-- 快手上手ES (二)
208 0
|
JSON 缓存 监控
白日梦的Elasticsearch系列笔记(一)基础篇-- 快手上手ES (三)
白日梦的Elasticsearch系列笔记(一)基础篇-- 快手上手ES (三)
210 0
下一篇
无影云桌面