本教程是为 ElasticSearch 版本 5.2 构建的。版本 5 在查询 DSL 和映射方面进行了一系列重大更改。
如果您仍在运行 2.x 版本,请查看此存储库的 v2 分支。
我整理了一系列示例来展示 ElasticSearch 的功能和强大功能。很多信息都基于“ElasticSearch,权威指南”。
在此下载 ElasticSearch 和 Kibana,然后按照以下简单步骤操作:
./bin/elasticsearch
./bin/kibana
练习 1 非常简单,目标是掌握 ElasticSearch RESTFul 界面的窍门。
主题:
负荷练习1
在练习 2 中,我们将对大量数据建立索引。为了提高性能,我们正在批量执行此操作。
此数据包含来自 Combell 博客的信息。我已对以下信息建立了索引:
该数据将用于其他练习。
批量加载博客数据
在练习 3 中,我们使用 ElasticSearch 查询 DSL 执行一些基本查询。 DSL 基于 JSON,查询是全文搜索。
以下是我们正在执行的一些搜索:
负荷练习3
在练习 4 中,我们将重点分析全文和人类语言。我们将忽略 ElasticSearch 的数据库功能,并向其添加一些文本,看看它如何标记数据。
根据您使用的分析器,ElasticSearch 将以不同的方式标记和存储数据。不用担心,原始数据将保留在文档的源中,改变的是倒排索引。
负载练习 4
练习 5 是关于索引的架构。 ElasticSearch 被宣传为无模式的。实际上,ElasticSearch 会为您猜测架构。
我将向您展示它猜测成功的示例和猜测失败的示例。
负荷练习5
为了避免 ElasticSearch 猜测模式错误,显式映射是一个好主意。练习 6 将为我们的博客示例设置正确的映射并重新插入数据。
整数和字符串将被相应地定义,并且日期将具有正确的格式。
练习 7 中将使用显式映射。
负荷练习 6
练习 5 中失败的 2 个搜索现在将再次执行。由于显式映射,输出将是正确的。
负载练习 7
在练习 8 中,我们将在博客索引上定义另一个映射。此映射仅将“标题”字段视为全文。其余字符串将不会被分析和标记化。它们将“按原样”存储。
该数据将在练习 9 中使用。
负荷练习 8
在练习 9 中,我将向您展示使用查询的全文搜索和在筛选模式下使用查询的精确值匹配之间的区别。
练习 8 中完成的映射已确保标题属性上现在有一个“关键字”字段。这意味着对“title”的查询被视为全文搜索,而对常规“title.keyword”字段的布尔过滤器被视为精确值匹配。
在其中一个示例中,我还将向您展示如何组合多个查询和过滤器。
这就是我们将在本练习中执行的操作:
负荷练习 9
我们将再次重新映射数据。这次,我们将“title”属性视为分析字段。默认情况下使用“标准”分析器。因为我们的数据都是荷兰语和英语,所以我添加了 2 个字段:
这是映射的最终版本。其他示例将使用此映射和数据。
负荷练习10
练习 11 是关于基于语言的文本分析。练习 4 是对数据分析的提示。现在我们将实际执行依赖于语言分析的搜索。
负荷练习 11
在练习 12 中,我们将创建一个新的“城市”索引,其中包含位于比利时West-Vlaanderen省的所有城市。该索引存储城市名称及其地理坐标。
显式映射和数据将在其他练习中使用。
负荷练习 12
在上一个练习中,我们创建了一个新索引并索引了一些地理数据。在练习 13 中,我们将实际对此数据执行搜索。
将显示 2 个查询:
负荷练习 13
在练习 14 中,我们将把数据加载到另一个索引中。该指数称为“汽车” ,包含汽车销售信息。每笔交易都会跟踪以下信息:
该信息将在练习 15 中使用。
负荷练习 14
聚合是 ElasticSearch 的一个非常强大的功能。它基本上类似于 SQL 中的“group by” ,但功能更强大。聚合是 ElasticSearch 在大数据和数据科学社区中流行的原因。
这些是我们将在本练习中执行的聚合:
负荷练习 15