带你读《Elastic Stack 实战手册》之61:——3.5.17.Elasticsearch SQL (1)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之61:——3.5.17.Elasticsearch SQL (1)

3.5.17.Elasticsearch SQL  


创作人:杨智

审稿人:刘帅

 

一、初步了解

 

1. Elasticsearch SQL 是什么?

 

2018年6月,Elasticsearch 6.3 版本 X-Pack 插件中引入新的 SQL 查询功能,虽然一直到现在,有经验的专业人员仍然更加喜欢使用 Elasticsearch DSL 来进行搜索,但是毫无疑问,

Elasticsearch SQL 的查询语法对于新用户更加友好,毕竟大部分程序员并不想从头学习一门新的语言下面是两条等价的查询语句:

# Elasticsearch SQL 查询语句
POST /_sql?format=txt
{
  "query": """
  SELECT AVG(DistanceKilometers) AS AvgDistance, 
  OriginCountry 
  FROM kibana_sample_data_flights 
  WHERE DestWeather='Sunny' AND AvgTicketPrice>=300 
  GROUP BY OriginCountry 
  ORDER BY OriginCountry ASC LIMIT 5"""
}
# Elasticsearch DSL 查询语句
GET kibana_sample_data_flights/_search
{
  "size" : 0,
  "query" : {
    "bool" : {
      "must": [
        {
          "term" : {
            "DestWeather" : {
              "value" : "Sunny"
            }
          }
        },
        {
          "range" : {
            "AvgTicketPrice" : {
              "gte": 300
            }
          }
        }
      ]
    }
  },
  "aggregations" : {
    "groupby" : {
      "composite" : {
        "size": 5, 
        "sources" : [
          {
            "a1" : {
              "terms" : {
                "field" : "OriginCountry",
                "order" : "asc"
              }
            }
          }
              ]
      },
      "aggregations" : {
        "a2" : {
          "avg" : {
            "field" : "DistanceKilometers"
          }
        }
      }
    }
  }
}

2. Elasticsearch SQL 不是什么?

 

Elasticsearch SQL 提供了一个符合 ANSI SQL 规范的只读接口,即通过 Elasticsearch SQL,我们只能进行搜索,无法实现创建、更新、删除 Elasticsearch 的索引或者索引中的文档。

 

Elasticsearch SQL 的查询功能,相比较于其他关系型数据库的 SQL 查询,有许多独特之处,例如: Elasticsearch SQL 不支持 join 查询语法,但却实现了更加强大的聚合分析函数。更多不同之处,下文将会详细介绍。

 

3. 环境说明

 

本文测试环境为 Elasticsearch Cloud 免费试用的 Elasticsearch 集群,其中 Elasticsearch 和 Kibana 版本是 7.14.0,文中查询的索引 test_logs 即是 Kibana 示例索引kibana_sample_data_logs。

image.png

image.png


# 新建索引别名
POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "kibana_sample_data_logs",
        "alias": "test_logs"
      }
        }
  ]
}



《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.17.Elasticsearch SQL (2) https://developer.aliyun.com/article/1227076

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
SQL 安全 数据管理
DMS产品常见问题之历史数据清理SQL修改失败如何解决
DMS(数据管理服务,Data Management Service)是阿里云提供的一种数据库管理和维护工具,它支持数据的查询、编辑、分析及安全管控;本汇总集中了DMS产品在实际使用中用户常遇到的问题及其相应的解答,目的是为使用者提供快速参考,帮助他们有效地解决在数据管理过程中所面临的挑战。
|
1月前
|
SQL 资源调度 Oracle
Flink CDC产品常见问题之sql运行中查看日志任务失败如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
3月前
|
SQL 自然语言处理 数据挖掘
「SQL面试题库」 No_115 按日期分组销售产品
「SQL面试题库」 No_115 按日期分组销售产品
|
3月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_104 购买了产品A和产品B却没有购买产品C的顾客
「SQL面试题库」 No_104 购买了产品A和产品B却没有购买产品C的顾客
|
3月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_94 列出指定时间段内所有的下单产品
「SQL面试题库」 No_94 列出指定时间段内所有的下单产品
|
3月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_47 买下所有产品的客户
「SQL面试题库」 No_47 买下所有产品的客户
|
5月前
|
SQL 关系型数据库 分布式数据库
阿里云PolarDB是一款兼容MySQL、PostgreSQL和SQL Server等多种数据库协议的产品
阿里云PolarDB是一款兼容MySQL、PostgreSQL和SQL Server等多种数据库协议的产品
647 6
|
11月前
|
SQL Java 数据库连接
带你读《Elastic Stack 实战手册》之61:——3.5.17.Elasticsearch SQL (2)
带你读《Elastic Stack 实战手册》之61:——3.5.17.Elasticsearch SQL (2)
|
11月前
|
SQL 索引
带你读《Elastic Stack 实战手册》之61:——3.5.17.Elasticsearch SQL (3)
带你读《Elastic Stack 实战手册》之61:——3.5.17.Elasticsearch SQL (3)
|
11月前
|
SQL druid 数据挖掘
带你读《Elastic Stack 实战手册》之61:——3.5.17.Elasticsearch SQL (4)
带你读《Elastic Stack 实战手册》之61:——3.5.17.Elasticsearch SQL (4)

相关产品

  • 检索分析服务 Elasticsearch版