当前位置: 首页 > 学英语

es查询语法,es查询语法详解

  • 学英语
  • 2025-11-11

es查询语法?比如查询 tags:/trust*/ 。具体正则表达式语法参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html#regexp-syntax 。可以搜索相似的词语,比如 trsut~ ,同样会匹配 trust 。范围可以是日期,数值,那么,es查询语法?一起来了解一下吧。

elasticsearch查询语法

前言

这篇博文本来是想放在全系列的大概第五、六篇的时候再讲的,毕竟查询是在索引创建、索引文档数据生成和一些基本概念介绍完之后才需要的。当前面的一些知识概念全都讲解完之后再讲解查询是最好的,但是最近公司项目忙经常加班,毕竟年底了。但是不写的话我怕会越拖越久,最后会不了了之了,所以刚好上海周末下雪,天冷无法出门,就坐在电脑前敲下了这篇博文。因为公司的查询这块是我负责的所以我研究了比较多点,写起来也顺手些。那么进入正文。

为什么用SQL查询

前面的文章介绍过,Elasticsearch 的官方查询语言是 Query DSL,既然是官方指定的,说明最吻合 ES 的强大功能,为ES做支撑。那么我们为什么还用 SQL 查询?这是否是多此一举了呢?

其实,存在毕竟有存在的道理,存在即合理。SQL 作为一个数据库查询语言,它语法简洁,书写方便而且大部分服务端程序员都清楚了解和熟知它的写法。但是作为一个 ES 萌新来说,就算他已经是一位编程界的老江湖,但是如果他不熟悉 ES ,那么他如果要使用公司已经搭好的 ES 服务,他必须要先学习 Query DSL,学习成本也是一项影响技术开发进度的因素而且不稳定性高。但是如果 ES 查询支持 SQL的话,那么也许就算他是工作一两年的同学,他虽然不懂 ES的复杂概念,他也能很好的使用 ES 而且顺利的参加到开发的队伍中,毕竟SQL 谁不会写呢?

Elasticsearch-SQL

我们正式介绍下我们的主角 - Elasticsearch-SQL,Elasticsearch-SQL不属于 Elasticsearch 官方的,它是 NLPChina(中国自然语言处理开源组织)开源的一个 ES 插件,主要功能是通过 SQL 来查询 ES,其实它的底层是通过解释 SQL,将SQL 转换为 DSL 语法,再通过DSL 查询。

elasticsearch菜鸟教程

实现对ES中存储的数据进行查询分析,使用的关键字是 _search ,比如下面的API

小例子:查询job字段中包含java的文档,结果根据age属性进行升序排序,返回第1个文档,如果超过1s没有结束,则以超时结束。

多词匹配之间使用空格进行隔开,词语之间的关系为 “或”

若想使用词语匹配,需要用双引号括起来

泛查询在之前其实就有演示过,即像 q = xiaoming 这种不指定检索字段范围,会在所有字段中进行检索的查询即称为泛查询。反之,如果指定了字段,就能大大缩小范围。常见的指定字段的方式为 字段:检索条件字符 。

SearchURI中也可以使用和和 Query DSL 类型的布尔操作符,不过具体的使用规则略有不同,具体的规则如下:

需要注意的是, “+” 号在url中会被解析为空格,要使用encode后的结果才可以,我们需要用%2B来替代一下。

范围查询支持数据范围和日期范围的查询,具体的表达式写法有两种方式:

Query URI 支持我们使用通配符来进行模糊查询, ? 表示一个字符, * 表示一个或者多个字符

注意: 通配符匹配执行效率低,且占用较多内存 ,数据较多时不建议使用

如无特殊需求,不要将 ?/* 放在最前面(因为会加大匹配的范围,降低匹配效率)

Query URI 支持我们使用正则表达式来进行检索

当我们对于检索条件字符不明确时, Query URI 支持我们使用近似值来作为模糊查询的条件,这个和之前的通配符不太一样,通配符很多时候是基于我们清楚某一段字符中的某个区间内容了(比如说最终的结果是 xiaoming ,我们可以根据知道的字符进行匹配,比如 xiao* 、 *ming )。

es根据地理查询语法

确实,通过SQL4ES插件,使用SQL查询ES(Elasticsearch)变得更加简单。以下是对SQL4ES插件的详细介绍和使用方法:

SQL4ES插件简介

在大数据环境下,Elasticsearch(简称ES)作为最常见的分布式数据库,其强大的搜索和分析能力得到了广泛应用。然而,对于初次接触ES的用户来说,其复杂的语法构成与标准SQL相差甚远,这无疑增加了学习和使用的难度。为了解决这个问题,SQL4ES插件应运而生。该插件允许用户通过熟悉的SQL语法来查询ES,极大地降低了使用门槛。

SQL4ES插件的使用方法

插件安装

首先,在插件市场中搜索“SQL4ES”并安装。安装完成后,你将看到插件的界面。

连接ES服务器

在插件界面中,输入ES服务器的地址,并点击“测试连接”按钮以验证连接是否成功。

如果连接成功,你将看到提示信息,表示你已成功连接到ES服务器。

查询索引和编写SQL

在成功连接到ES服务器后,你需要输入要查询的索引名称。索引是ES中存储数据的地方,类似于关系型数据库中的表。

es源码架构

Lucene Query、ElasticSearch 与 Grafana 资料梳理

一、Lucene Query

1. Parser Syntax

简介:Lucene Query Parser Syntax 是 Apache Lucene 提供的一种查询语法,用于构建复杂的搜索查询。

核心要素

基本查询:如关键词查询(term query),使用空格分隔多个关键词表示“与”关系。

布尔查询:使用布尔操作符(AND、OR、NOT)组合多个查询条件。

字段查询:指定字段进行查询,如 fieldname:value。

通配符查询:使用 * 和 ? 作为通配符,如 text:*search 表示以 "search" 结尾的任意文本。

范围查询:如 [start TO end] 表示在某个范围内的值。

es语法详解

可以使用自定义表达式构建ES查询条件。

Elasticsearch提供了丰富的查询语法和功能,可以通过自定义表达式来构建查询条件。其中,常用的查询类型包括匹配查询(match query)、范围查询(range query)、布尔查询(bool query)等。通过组合这些查询类型和使用逻辑运算符(如AND、OR、NOT)可以构建复杂的查询条件。

以上就是es查询语法的全部内容,在成功连接到ES服务器后,你需要输入要查询的索引名称。索引是ES中存储数据的地方,类似于关系型数据库中的表。接下来,你可以在文本框中编写SQL查询语句。由于SQL4ES插件的支持,你可以使用标准的SQL语法来查询ES中的数据。编写完SQL查询语句后,点击“执行”按钮,你将看到查询结果。内容来源于互联网,信息真伪需自行辨别。如有侵权请联系删除。

猜你喜欢