袁庭新老师ES系列11节|Elasticsearch基本查询
前言
查询操作是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高级查询相关的内容。