Elasticsearch query查询语法 --- 2022-04-03

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch query查询语法 --- 2022-04-03相关的知识,希望对你有一定的参考价值。

参考技术A 本章介绍ES 的query子句的语法,query子句主要用于编写查询条件,类似SQL中的where语句。

1.匹配单个字段
通过match实现全文搜索,全文搜索的后面有单独的章节讲解,这里大家只要知道简单的用法就可以。

语法:

说明:

FIELD - 就是我们需要匹配的字段名
TEXT - 就是我们需要匹配的内容
例子:

article索引中,title字段匹配ES教程的所有文档。

如果title字段的数据类型是text类型,搜索关键词会进行分词处理。

2.精确匹配单个字段
如果我们想要类似SQL语句中的等值匹配,不需要进行分词处理,例如:订单号、手机号、时间字段,不需要分值处理,只要精确匹配。

通过term实现精确匹配语法:

说明:

FIELD - 就是我们需要匹配的字段名
VALUE - 就是我们需要匹配的内容,除了TEXT类型字段以外的任意类型。
例子:

搜索订单号order_no = "202003131209120999"的文档。

类似SQL语句:

select * from order_v2 where order_no = "202003131209120999"
3.通过terms实现SQL的in语句
如果我们要实现SQL中的in语句,一个字段包含给定数组中的任意一个值就匹配。

terms语法:

说明:

FIELD - 就是我们需要匹配的字段名
VALUE1, VALUE2 .... VALUE N - 就是我们需要匹配的内容,除了TEXT类型字段以外的任意类型。
例子:

搜索order_v2索引中,shop_id字段,只要包含[123,100,300]其中一个值,就算匹配。

类似SQL语句:

select * from order_v2 where shop_id in (123,100,300)
4.范围查询
通过range实现范围查询,类似SQL语句中的>, >=, <, <=表达式。

range语法:

参数说明:

FIELD - 字段名
gte范围参数 - 等价于>=
lte范围参数 - 等价于 <=
范围参数可以只写一个,例如:仅保留 "gte": 10, 则代表 FIELD字段 >= 10
范围参数如下:

gt - 大于 ( > )
gte - 大于且等于 ( >= )
lt - 小于 ( < )
lte - 小于且等于 ( <= )
例子1:

查询order_v2索引中,shop_id >= 10 且 shop_id <= 200的文档

类似SQL:

例子2:

类似SQL:

5.bool组合查询
前面的例子都是设置单个字段的查询条件,如果需要编写类似SQL的Where语句,组合多个字段的查询条件,可以使用bool语句。

5.1. bool查询基本语法结构
在ES中bool查询就是用来组合布尔查询条件,布尔查询条件,就是类似SQL中的and (且)、or (或)。

在SQL中,我们需要and和or,还有括号来组合查询条件,在ES中使用bool查询可用做到同样的效果。

bool语法结构:

可以任意选择must、must_not和should条件的参数都是一个数组,意味着他们都支持设置多个条件。

提示:前面介绍的单个字段的匹配语句,都可以用在bool查询语句中进行组合。

5.2. must条件
类似SQL的and,代表必须匹配的条件。

语法:

例子1:

这里的Must条件,使用了term精确匹配。

等价SQL:

5.3. must_not条件
跟must的作用相反。

语法:

例子:

等价sql:

5.3. should条件
类似SQL中的 or, 只要匹配其中一个条件即可

语法:

例子:

等价SQL:

5.4. bool综合例子

等价SQL:

以上是关于Elasticsearch query查询语法 --- 2022-04-03的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 查询语法 --- 2022-04-03

ElasticSearch search api的基础语法+Query DSL搜索+filter与query对比+组合查询+定位不合法的搜索

Elasticsearch语法知多少之Match query

Elasticsearch Query DSL概述与查询过滤上下文

Elasticsearch系列(12)Query之复合查询

elasticsearch 的基本查询语法使用(下)