带你读《Elastic Stack 实战手册》之61:——3.5.17.Elasticsearch SQL (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

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何在SQL语句里使用CASE WHEN语句
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
573 2
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之相同的SQL语句在不同时间执行EXPLAIN计划显示出不同的索引类型,是什么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之相同的SQL语句在不同时间执行EXPLAIN计划显示出不同的索引类型,是什么原因
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之未保存的ODPS SQL语句该如何找回
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
258 2
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之遇到慢SQL问题,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
SQL 弹性计算 资源调度
云服务器 ECS产品使用问题之bin/spark-sql --master yarn如何进行集群模式运行
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之sql运行报错是神么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
SQL 关系型数据库 Serverless
PolarDB产品使用问题之如何控制队列中排队的SQL的等待时间
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之将RDS切换到PolarDB-X 2.0时,代码层的SQL该如何改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之出现部分SQL抛出7543错误,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
SQL 缓存 关系型数据库
PolarDB产品使用问题之SQL语句是否可以参数化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。

热门文章

最新文章

相关产品

  • 检索分析服务 Elasticsearch版