首页 > 数据库 >ElasticSearch SQL学习笔记

ElasticSearch SQL学习笔记

时间:2022-10-25 18:01:28浏览次数:72  
标签:10 SQL mysql 笔记 host ElasticSearch sql query

ElasticSearch SQL学习笔记

基础信息

ElasticSearch SQL是一个X-Pack组件,允许ElasticSearch实时执行类似SQL的查询,由ElasticSearch原生支持,无需安装其他插件。

基本语法

Elastic SQL语法和标准SQL语法基本一致,格式为:

SELECT select_expr [, ...]
[ FROM table_name ]
[ WHERE condition ]
[ GROUP BY grouping_element [, ...] ]
[ HAVING condition]
[ ORDER BY expression [ ASC | DESC ] [, ...] ]
[ LIMIT [ count ] ]
[ PIVOT ( aggregation_expr FOR column IN ( value [ [ AS ] alias ] [, ...] ) ) ]

使用_sql接口来执行SQL语句:

## 注意表名和列名可以使用双引号但不能使用单引号
## 单引号表示字符串
POST _sql?format=txt
{
  "query": """
  SELECT * FROM mysql_host_info WHERE check_time>'2022-10-25 15:30:00' ORDER BY check_time ASC LIMIT 10
  """
}

将SQL转换伪DSL

可以通过_sql/translate 来将SQL语句转换伪DSL语句:

POST _sql/translate
{
  "query": """
  SELECT mysql_host,mysql_instances 
  FROM mysql_host_info 
  WHERE check_time>'2022-10-25 15:30:00' 
  ORDER BY check_time ASC LIMIT 10
  """
}

转换后的DSL为:

{
  "size": 10,
  "query": {
    "range": {
      "check_time": {
        "gt": "2022-10-25 15:30:00",
        "boost": 1
      }
    }
  },
  "_source": false,
  "fields": [
    {
      "field": "mysql_host"
    },
    {
      "field": "mysql_instances"
    }
  ],
  "sort": [
    {
      "check_time.keyword": {
        "order": "asc",
        "missing": "_last",
        "unmapped_type": "keyword"
      }
    }
  ]
}

在转换后的DSL上加上索引信息GET /mysql_host_info/_search便可直接运行。

混合SQL和DSL使用

可以将DSL和SQL混合使用,如:

POST _sql
{
  "query": """
  SELECT mysql_host,mysql_instances 
  FROM mysql_host_info 
  ORDER BY check_time ASC
  """,
  "filter": {
    "range": {
      "check_time": {
        "gt": "2022-10-25 15:30:00",
        "boost": 1
      }
    }
  },
  "fetch_size": 10
}

全文索引查询

当使用MATCH和QUERY函数时,会启动全文搜索功能,并可通过SCORE函数来获取搜索评分。如:

## 使用MATCH查询mysql_instances中包含3310的记录
POST _sql
{
  "query": """
  SELECT mysql_host,mysql_instances 
  FROM mysql_host_info 
  WHERE MATCH(mysql_instances,'3310')
  ORDER BY check_time ASC
  """
}

## 使用QUERY查询mysql_instances中包含3310的记录
## 并按照评分排序取TOP 10
POST _sql
{
  "query": """
  SELECT mysql_host,mysql_instances,SCORE() 
  FROM mysql_host_info 
  WHERE QUERY('mysql_instances:3310')
  ORDER BY SCORE() DESC
  LIMIT 10
  """
}

其他操作

  • 使用SHOW TABLES来查看所有表信息:
POST _sql?format=txt
{
  "query": """
  SHOW TABLES
  """
}
  • 使用DESCRIBE TABLE_NAME来查看表中字段信息:
POST _sql?format=txt
{
  "query": """
  DESCRIBE mysql_host_info
  """
}
  • 使用SHOW FUNCTIONS来查看函数信息:
POST _sql?format=txt
{
  "query": """
  SHOW FUNCTIONS LIKE '%DATE%'
  """
}

参考资料

标签:10,SQL,mysql,笔记,host,ElasticSearch,sql,query
From: https://www.cnblogs.com/gaogao67/p/16825743.html

相关文章

  • SQL中如何删除重复数据,只保留其中一行
    SQL专栏SQL数据库基础知识汇总SQL数据库高级知识汇总需求分析数据库中存在重复记录,删除保留其中一条(是否重复判断基准为多个字段)解决方案碰到这样的问题我们先分解步......
  • Cypher Sql
    CypherSqlSQL查询SQL中很容易,只需从products表中查询所有数据。SELECTp.*FROMproductsaspCypher查询在Cypher中,您只需匹配一个简单的模式:查询带有标签:Produc......
  • MySQL 通用查询日志与慢查询日志
    MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。1)通用查询日志:记录建立的客户端连接......
  • mysql数据导出
    #导出数据到本地文件mysqldump-uroot-p我的密码-T/data/test1010qgdatacompany_lawsuit--fields-terminated-by='|'--lines-terminated-by='\n'-p我的密码#密......
  • mysql修改用户开放ip权限
    远程连接不上mysql有很多原因:服务器防火墙,mysql默认绑定本地ip,访问用户默认绑定本地ip防火墙的原因需要配置策略或者关闭mysql绑定本地ip需要配置mysql用户的需要修改用......
  • 用SQL语句,删除掉重复项只保留一条
    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select*frompeoplewherepeopl......
  • Elasticsearch rest-high-level-client 基本操作
    Elasticsearchrest-high-level-client基本操作本篇主要讲解一下rest-high-level-client去操作Elasticsearch,虽然这个客户端在后续版本中会慢慢淘汰,但是目前大部......
  • Mysql rank排名函数
    https://www.jianshu.com/p/776151cbba03https://blog.csdn.net/m0_60196931/article/details/125214918......
  • mysql08--索引管理
    一、索引理论ps:数据都是存在于硬盘上的,查询数据不可避免的需要进行IO操作#索引:就是一种数据结构,类似于书的目录。意味着以后在查询数据的应该先找目录再找数据,而......
  • 发现一款 SQL 自动检查神器,再也不用担心 SQL 出错了!
    YearningMYSQL是一个SQL语句审核平台。提供查询审计,SQL审核等多种功能,支持Mysql,可以在一定程度上解决运维与开发之间的那一环,功能丰富,代码开源,安装部署容易!开源地址h......