欢迎光临散文网 会员登陆 & 注册

袁庭新老师ES系列11节|Elasticsearch基本查询

2023-09-19 11:59 作者:袁庭新  | 我要投稿

前言

查询操作是Elasticsearch最核心的模块之一。Elasticsearch能够达到数据的实时搜索,而且性能非常稳定,能很方便地用于对大量数据进行搜索和分析。这些都体现了Elasticsearch强大的搜索能力,因此关于Elasticsearch的查询知识的相关学习就显得非常重要。本小节袁老师就带领大家来学习Elasticsearch基本查询操作。我们从以下六个模块来学习Elasticsearch的基本查询功能。

  • 查询所有match_all

  • 匹配查询match

  • 词条匹配term

  • 布尔组合bool

  • 范围查询range

  • 模糊查询fuzzy

一. 查询所有match_all

1.语法结构

基本语法:

这里的query代表一个查询对象,里面可以有不同的查询属性。

  • 查询类型:例如match_all、match、term、range等。

  • 查询条件:查询条件会根据类型的不同,写法也有差异,后面详细讲解。

2.match_all查询

2.1 演示案例

演示示例:

语法说明:

响应结果:

2.2 属性介绍

查询所有的属性介绍:

搜索结果总览对象属性介绍:

搜索结果的文档对象数组属性介绍:

二. match匹配查询

我们先加入一条数据,便于测试:

现在,索引库中有3部手机,1台电视。

1.OR关系

match类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是OR的关系。

在上面的案例中,不仅会查询到“电视”,而且与“小米”相关的都会查询到,多个词之间是OR的关系。

2.AND关系

某些情况下,我们需要更精确查找:比如在电商平台精确搜索商品时,我们希望这个关系(查询条件切分词之后的关系)变成AND(既要满足你,又要满足我),可以这样做:

本例中,只有同时包含“小米”和“电视”的词条才会被搜索到。

三. term词条匹配

term查询被用于精确值匹配,这些精确值可能是数字、时间、布尔或者那些未分词的字符串,keyword类型的字符串。

效果类似于:"SELECT * FROM tableName WHERE colName='value';"的SQL语句。

响应结果:

四. bool布尔组合

bool把各种其它查询通过must(与)、must_not(非)、should(或)的方式进行组合。

响应结果:

五. range范围查询

range查询找出那些落在指定区间内的数字或者时间。

响应结果:

range查询允许以下字符:

fuzzy查询是term查询的模糊等价,很少直接使用它。

我们新增一个商品:

响应结果:

 fuzzy查询是term查询的模糊等价。它允许用户搜索词条与实际词条的拼写出现偏差,但是偏差的编辑距离不得超过2。

上面的查询,也能查询到“Apple手机”这条数据。

七. 结语

本小节主要给小伙伴介绍了Elasticsearch的六大基本查询语句的操作。分别介绍了:查询所有match_all、匹配查询match、词条匹配term、布尔组合bool、范围查询range和模糊查询fuzzy等。这一块儿的内容很重要,需要大家反复练习进行掌握。好了这一小节我们就说到这里,下一小节将带领大家来学习Elasticsearch高级查询相关的内容。

袁庭新老师ES系列11节|Elasticsearch基本查询的评论 (共 条)

分享到微博请遵守国家法律