技术原理

Elasticsearch教程-增强搜索能力

在我之前关于什么是Elasticsearch的博客中,我介绍了Elasticsearch,讨论了它的优点,并在windows上进行了安装。我还讨论了Elasticsearch中的基本概念和不同的API约定。但让我告诉你一些有趣的事情,无论我在上一篇博客中讨论过什么,都只是冰山一角。在这个Elasticsearch教程博客中,我将介绍使Elasticsearch在竞争对手中最快、最受欢迎的所有功能。另外,我将向您介绍Elasticsearch中的不同API,以及如何通过Elasticsearch教程博客使用它们执行不同的搜索。下面的

是我将讨论的Elasticsearch教程博客的主题:

Elasticsearch API查询DSL映射分析模块

开始学习Elasticsearch教程博客的第一个主题。

Elasticsearch API–Elasticsearch教程

Elasticsearch教程博客的这一部分讨论了Elasticsearch支持的各种API。让我们详细地了解它们。

Document API

Elasticsearch提供了单文档API和多文档API。

单文档API Index API Get API Update API Delete API多文档API multi Get API Bulk API Delete By Query API Update By Query API Reindex API

文档API的类型,让我们尝试对它们执行CRUD操作。

索引API

索引API负责在特定索引中添加和更新类型化的JSON文档,然后使其可搜索。下面的示例将JSON文档插入“playlist”索引中名为“kpop”的类型下,其id为1:

输入/播放列表/kpop/1“title”:“美好生活”,“artist”:“压碎”,“album”:“妖精”,“年”:2017年{“artist”:“压碎”,“年”:2017年,}DELETE API

DELETE API负责根据其唯一id从特定索引中删除键入的JSON文档。以下示例从名为“kpop”的类型下的“playlist”索引获取JSON文档,id值为3:

DELETE/playlist/kpop/3 Search API

Search API负责搜索Elasticsearch中的内容。您可以通过发送带有字符串参数的查询的get请求或post请求的消息正文中的查询进行搜索。通常,搜索api是多索引或多类型的。

在具有统一资源标识符(URI)的搜索操作中可以传递各种参数:

参数描述q此参数通过将此参数的值设置为true来指定查询字符串的宽松度,基于格式的错误可以忽略字段此参数从选定字段获取响应排序此参数排序结果超时此参数有助于限制搜索时间终止此参数将响应限制为每个碎片中特定数量的文档后终止此参数指定开始索引大小此参数指定命中次数要返回

,现在您已经熟悉了搜索参数,让我们看看如何通过多个索引和类型执行搜索。Elasticsearch中的

多索引

,您可以搜索所有索引或某些特定索引中的文档。下面的示例从所有索引中搜索JSON文档,年份是2014年:

GET playlist,my_playlist/_search?q=2014年{“艺人”:“素菊”,“年”:2014年,}多类型

还可以跨所有类型或某些指定类型搜索特定索引中的所有文档。下面的示例从“playlist”索引中的“all Type”下搜索JSON文档,年份为2017:

GET playlist/\u search?q=2017

弹性搜索教程的下一节将讨论弹性搜索支持的聚合及其类型。

聚合

在弹性搜索中,聚合框架负责提供基于搜索查询的聚合数据。聚合可以组合在一起以构建数据的复杂摘要。为了更好地理解,请将其视为一个工作单元。它在Elasticsearch中提供的一组文档上开发分析信息,提供各种类型的聚合,每种聚合都有自己的目的和输出。为了简化,它们被概括为四大类:

Bucketing

,这里每个bucket都与一个键和一个文档相关联。每当执行聚合时,将对每个文档计算所有存储桶条件。每次标准匹配时,文档都被视为“落在”相关的bucket中。

Metric

Metrics是负责跟踪和计算一组文档上的度量的聚合。

Matrix

matrics是负责在多个字段上操作的聚合。它们根据从请求的文档字段中提取的值生成矩阵结果。Matrix不支持脚本。

管道

管道是负责将其他聚合的输出及其相关度量聚合在一起的聚合。

以下示例显示了基本聚合的结构:

“聚合”:{“”:{“”:{}[,“aggregations”:{[] }?}}索引API

在Elasticsearch中,索引API或索引API负责管理单个索引、索引设置、别名、映射和索引模板。下面是我们可以对索引API执行的一些操作:

Create Index

Create Index API负责实例化索引。每当用户传递JSON对象时,都会自动创建索引。下面的示例创建了一个名为“courses”的索引,其中包含一些设置:

PUT courses{“索引”:{“碎片数”:3,}}获取索引

获取API负责获取有关索引的信息。通过将get请求发送到一个或多个索引,您可以调用它。下面的示例检索名为“courses”的索引:

GET/courses Delete index

Delete index API负责删除现有索引。下面的示例删除名为“courses”的索引:

Delete/courses Open/Close index API

Open和Close index API负责关闭索引,然后打开它。对于任何读/写操作,关闭的索引都被阻止。但您仍然可以打开它,然后它将经历正常的恢复过程。下面的示例关闭并打开一个名为“courses”的索引:

POST/courses/\u close职位/课程/课程需要时,Elasticsearch中的索引别名

api可以在处理特定索引时接受索引名。索引别名API允许用名称给索引加别名,所有API都会自动将别名转换为实际索引名{{“add”:{“index”:“courses”,“alias”:“subjects”}}发布/使用别名“行动”:[{“remove”:{“index”:“courses”,“alias”:“subjects”}}分析Elasticsearch中的

,它对文本执行分析过程并返回文本的标记分解。您可以在不指定任何索引的情况下执行分析“analyzer”:“标准”,“text”:“这是演示”{“模板”:“te*”,“设置”:{},“类型1”:{“启用”:假“财产”:{“主机名”:{},“创建位置”:{“格式”:“EEE MMM dd HH:mm:ss Z yyy”}}}索引统计

在Elasticsearch中,索引级统计负责提供索引上发生的不同操作的统计信息。API通常提供索引级别的统计信息获取/播放列表/统计信息Flush

Flush API负责通过API刷新一个或多个索引。基本上,它是通过将数据推送到索引存储并清除内部事务日志从索引释放内存的过程。下面的示例显示正在刷新的索引:

POST playlist/\u flush Refresh

刷新API负责显式刷新一个或多个索引。这使得自上次刷新后执行的所有操作都可用于搜索。以下示例显示正在刷新的索引:

POST/courses/\u refresh发布/播放列表、课程/刷新群集API

Elasticsearch中的群集API负责获取有关群集及其节点的信息并对其进行进一步更改。

群集运行状况

此API负责通过附加运行状况关键字来检索群集的运行状况。以下示例显示群集运行状况:

获取_cluster/health cluster State

此群集状态API负责通过附加“State”关键字URL来检索有关群集的状态信息。状态包含各种信息,如版本、主节点、其他节点、路由表、元数据和块。下面的示例显示群集状态:

GET/\u cluster/state cluster Stats

cluster Stats API负责从群集范围的角度检索统计信息。它返回组成群集的当前节点的基本索引度量和信息。以下示例显示群集状态:

GET/\u cluster/stats Pending cluster Tasks

此API负责监视任何群集中的挂起任务。任务可能包括创建索引、更新、映射、分配碎片,失败碎片等。下面的示例显示群集状态:

GET/_cluster/pending_tasks Node stats

此群集节点状态API负责检索一个或多个群集节点统计信息。下面的示例显示群集节点状态:

GET/_nodes/stats nodes hot_thread

此API负责检索集群中每个节点上的当前热线程。以下示例显示集群的热线程:

GET/\u node s/hot\u threads

本Elasticsearch教程博客的下一节将讨论Elasticsearch提供的查询DSL。

Query DSL–Elasticsearch教程

Elasticsearch提供完整的基于JSON的查询DSL,负责定义查询。查询DSL由两种类型的子句组成:Elasticsearch中的

叶查询子句

,叶查询子句搜索特定字段中的特定值,如match、term或range查询。这些查询也可以自己使用。

复合查询子句

在Elasticsearch中,复合查询子句包装其他叶或复合查询。这些查询用于以逻辑方式组合多个查询或更改其行为。

匹配所有查询

这是最简单的查询,它匹配所有文档并为每个对象返回1.0的分数{“查询”:{“全部匹配”:{}}全文查询

这些查询用于对全文字段运行全文查询。这些基本上是高级查询,它们了解如何分析所查询的字段。然后在执行之前,它将每个字段的分析器应用于查询字符串{“匹配”:{“title”:“美好生活”}{“term”:{“title”:“Silence”}}

一些全文查询是:

查询描述术语此查询用于查找包含指定的确切术语的文档。术语此查询用于查找包含指定的任何确切术语的文档。范围此查询用于查找指定字段中必须包含指定范围的文档。exits此查询用于查找指定字段包含任何非空值的文档。前缀此查询用于查找包含以指定的确切前缀开头的术语的文档。通配符此查询用于查找包含与指定模式匹配的术语的文档。regexp此查询用于查找包含与正则表达式匹配的术语的文档。fuzzy此查询用于查找包含与指定术语模糊相似的术语的文档。type此查询用于查找指定类型的文档。id此查询用于查找具有指定类型和id的文档。复合查询“kdsp”Elasticsearch中的复合查询,负责将其他复合查询或叶查询包装在一起。这样做是为了组合他们的结果和分数,改变他们的行为,或者从查询切换到筛选上下文{“查询”:{“title”:“路西法”}}

一些全文查询是:

查询描述常数。此查询用于包装另一个查询并在筛选上下文中执行。bool默认情况下,此查询用于组合多个叶或复合查询子句。dis_max此查询接受多个查询,然后返回与任何查询子句匹配的文档。function_score此查询用于修改主查询返回的分数,使用函数将流行度、最近度、距离或通过脚本实现的自定义算法等因素考虑在内。boosting此查询用于返回与正查询匹配的文档,但减少与负查询匹配的文档的分数。索引此查询用于对指定索引执行一个查询,对其他索引执行另一个查询。在像Elasticsearch这样的分布式系统中连接查询

,执行完全SQL风格的连接非常昂贵。因此,Elasticsearch提供了两种连接形式,它们被设计成水平伸缩。

嵌套查询

这个查询用于包含嵌套类型字段的文档。使用此查询,您可以将每个对象作为独立文档进行查询。

具有子级和父级查询

此查询用于检索单个索引中两个文档类型之间的父子关系。has_子查询返回匹配的父文档,has_父查询返回匹配的子文档。

以下示例显示了一个简单的连接查询:

POST/my_playlist/\u search“查询”:“有孩子”:{“type”:“kpop”,“query”:{“艺术家”:“EXO”}}}地理查询

在Elasticsearch中,支持两种类型的地理数据:

地理点:这些是支持lat/lon对地理形状的字段:这些是支持点、线、圆、多边形、多多边形等的字段{“查询”:{“过滤器”:{“地理距离”:{“距离”:“150公里”,}}}}

本Elasticsearch教程博客的下一部分将讨论Elasticsearch中可用的不同映射。

映射–Elasticsearch教程

在Elasticsearch中,映射负责定义文档及其字段的存储和索引方式。下面的示例显示了一个简单的映射查询:

POST/playlist发布/播放列表“映射”:{“报告”:{“启用”:真},“财产”:{“title”:{“type”:“string”},“artist”:{“type”:“string”},“相册”:{“类型”:“字符串”},“年份”:{“类型”:“整数”}}}字段类型

Elasticsearch支持文档中字段的各种数据类型,如:

数据类型描述核心这些是几乎所有系统都支持的基本数据类型。基本数据类型有integer、long、double、short、byte、double、float、string、date、Boolean和binary。复杂这些是核心数据类型的组合。例如数组、JSON对象和嵌套数据类型。Geo这些是用于定义地理属性的数据类型。专门化这些是用于特殊目的的数据类型。在Elasticsearch中,映射类型

,每个索引都有一个或多个映射类型。这些映射类型用于将索引的文档划分为逻辑组/单元。映射可以根据以下参数进行区分:

元字段:元字段负责自定义如何处理文档的关联元数据。Elasticsearch中的元字段包括文档的索引、类型、id和源字段。字段或属性:在Elasticsearch中,每种映射类型都有一个字段或属性列表,这些字段或属性都是特定的。在索引中,名称相同但映射类型不同的字段应具有相同的映射。动态映射:Elasticsearch允许自动创建称为动态映射的映射。使用动态映射,用户可以将数据发布到任何未定义的映射。”

这个Elasticsearch教程博客的下一节将向您介绍Elasticsearch中的分析过程。

分析–Elasticsearch教程

在Elasticsearch中,分析是将文本转换为标记或术语的过程。然后将这些标记添加到反向索引中以进行搜索。这个分析过程是由一个分析器执行的。分析器可以有两种类型:

内置分析器自定义分析器定义每个索引因此,如果没有定义分析器,那么默认情况下,内置分析器将执行分析“映射”:{“财产”:{“type”:“文本”,}}}}Elasticsearch中的

分析器、标记器和可选的标记过滤器组成分析器。在分析模块中,这些分析器使用逻辑名称注册。使用名称,可以在映射定义或某些api中引用分析器。以下是一些默认的分析器-

分析器描述标准使用此分析器可以设置stopwords和max_token_length。简单来说,小写的tokenizer组成此分析器。空白空白标记赋予器组成这个分析器。停止使用此分析器,可以配置stopwords和stopwords路径。关键字使用此分析器,可以将整个流标记为单个标记。模式使用此分析器,可以配置正则表达式,如小写、模式、标志,stopwords等语言使用此分析器可以分析不同的语言,如印地语、阿拉伯语、荷兰语等。Snowball此分析器使用标准的标记赋予器,带有标准筛选器、小写筛选器、stop筛选器和Snowball筛选器。自定义使用此分析器,将创建自定义分析器以及带有可选令牌筛选器和字符筛选器的令牌赋予器。标记器

在Elasticsearch中,标记器负责从文本生成标记。使用空白或其他标点符号,文本可以分解为标记。Elasticsearch提供了一个内置标记器列表,这些标记器用于自定义分析器。以下是Elasticsearch中使用的一些标记器:

标记器描述标准,它是基于语法的标记器开发的,也可以为其配置最大标记器长度。Edge NGram可以为这个令牌赋予器设置不同的配置,比如min_gram、max_gram、token_chars。关键字此标记赋予器负责将整个输入作为输出生成并设置缓冲区大小。字母此标记器负责捕获整个单词,除非遇到非字母。小写这个记号赋予器的工作方式类似于字母记号赋予器。一旦创建了令牌,它就会将它们改为小写。NGram您可以为这个令牌赋予器设置min_gram、max_gram和token_chars等。模式此令牌赋予器使用正则表达式作为令牌分隔符。UAX Email URL此工作方式与标准令牌赋予器类似,但将电子邮件和URL引用为单个令牌。路径层次结构此标记赋予器负责生成输入目录路径中存在的所有可能路径。经典此标记赋予器使用基于语法的标记来实现其功能。泰语这是用于泰语的,它使用内置的泰语分割算法进行处理。标记过滤器

在Elasticsearch中,标记器将输入发送到标记过滤器。这些令牌过滤器可以进一步修改、删除或向输入中添加文本。

字符过滤器

在令牌器之前,文本由字符过滤器处理。字符过滤器搜索特殊字符或HTML标记或指定模式。之后,它要么删除它们,要么将它们更改为适当的单词。

本Elasticsearch教程博客的下一部分将讨论Elasticsearch提供的不同模块。

模块-Elasticsearch教程

Elasticsearch由不同模块组成,负责其功能的各个方面。每个模块都可以有以下任意一个设置:

静态-这些设置必须在节点级别完成,并且必须在每个相关节点上设置。动态–这些设置可以在实时群集上动态更新。模块描述集群级路由和shard分配,负责控制将shard分配给节点的位置、时间和方式的设置。发现负责发现群集并维护其中所有节点的状态。网关负责在重新启动期间跨整个群集维护群集状态和碎片数据。HTTP负责管理HTTP客户端和Elasticsearch api之间的通信。mai指标n为每个索引全局设置的设置。负责控制默认网络设置的网络。负责在群集中启动节点的节点客户端。负责安全使用内联和存储脚本的无痛苦默认脚本语言。负责以自定义方式增强基本elasticsearch功能的插件。脚本使用户能够使用脚本计算自定义表达式。快照/还原负责将单个索引或整个群集的快照创建到远程存储库中。线程池负责保存多个线程池,以改进如何在节点内管理线程内存消耗。传输负责配置传输网络层。部落节点负责加入一个或多个集群,并充当跨集群的联合客户端。跨集群搜索负责跨多个集群执行搜索请求,而不加入这些请求,并充当跨这些请求的联合客户端。”这就把我们带到了Elasticsearch教程博客的末尾。我希望通过这篇关于Elasticsearch教程的博客,我能够清楚地解释不同的Elasticsearch API以及如何使用它们。

Elasticsearch教程|如果你想接受Elasticsearch的培训并希望轻松地搜索和分析大型数据集,请查看ELKEdureka是一家值得信赖的在线学习公司,拥有遍布全球超过25万名满意的学习者。

有问题要问我们吗?请在评论部分提到它,我们会给你回复的

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
人工智能呈现的新特征是什么 投稿者
我还没有学会写个人说明!
最近文章
  • * 没有更多文章了
  • 热门搜索

    分类目录