Jast blog Jast blog
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

Jast-zsh

如果你知道你要去哪里,全世界都会给你让路。
首页
  • 《Ambari自定义开发教程》笔记
  • 《CDH教程》笔记
  • 《ClickHouse教程》笔记
  • 《HDFS教程》笔记
  • 《DolphinScheduler教程》笔记
  • 《Hbase教程》笔记
  • 《Iceberg教程》笔记
  • 《Hive教程》笔记
  • 《Flume教程》笔记
  • 《Kafka教程》笔记
  • 《Impala教程》笔记
  • 《Hue教程》笔记
  • 《Spark教程》笔记
  • 《Flink教程》笔记
  • 《Phoenix教程》笔记
  • 《ElasticSearch教程》笔记
  • 《Kylin教程》笔记
  • 《Storm教程》笔记
  • 《Yarn教程》笔记
  • 《Presto教程》笔记
  • 《图数据库教程》笔记
  • 《Kerberos教程》笔记
  • 《Maxwell教程》笔记
  • 《MinIO教程》笔记
  • 《DataX教程》笔记
  • 《Superset教程》笔记
  • 《IOTDB教程》笔记
  • 《大数据相关》笔记
  • 《PaddleNLP教程》笔记
  • 《Nginx教程》笔记
  • 《Java技术文档》
  • 《Maven教程》笔记
  • 《IDEA使用教程》
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • ElasticSearch单机版安装
  • ElasticSearch7集群安装
  • ElasticSearch-Head浏览器插件离线安装
  • ElasticSearch-SQL浏览器离线插件安装
  • ElasticSearch快照脚本
  • ELasticSearch监控之Cerebro
  • Elasticsearch-SQL
    • 执行SQL
    • SQL转DSL
    • SQL GroupBy 截取keyword某一段进行分组查询
    • 时间函数
  • ElasticSearch优化指南
  • ElastiSearch Merger
  • Elasticsearch Pipeline 详解
  • ElasticSearch正确的重启方式
  • ElasticSearch查询模板Mustache
  • ElasticSearch索引模板
  • ElasticSearch集群快照
  • ElasticSearch集群修改密码
  • 深入理解ElasticSearch慢查询日志
  • ElasticSearch Kibana白金级破解
  • ElasticSearch API查看集群状态
  • ElasticSearch DSL操作
  • ElasticSearch Script操作数据
  • ElasticSearch中副本和分片如何优化?
  • Docker安装ElasticSearchDump备份数据
  • ElasticSearch使用Grafana监控服务状态
  • Grafana配置ElasitcSearch监控-独立部署版本
  • ElasticSearch批量修改报错
  • ElasticSearch数据版本冲突
  • ElasticSearch索引_cat统计数量与_count统计数量不一致
  • Kibana使用Nginx反向代理设置提示404
  • ElasticSearch优化之线程池介绍
  • 当ElasticSearch时间字段设置多个格式到底是用的哪个?
  • 《ElasticSearch教程》笔记
Jast-zsh
2022-06-28
目录

Elasticsearch-SQL

# ElasticSearch SQL

[toc]

# 执行SQL

POST /_xpack/sql?format=json
{
    "query": "SELECT * FROM ads_user_profile where name like '%睿'"
  	,"fetch_size":"1"
}
1
2
3
4
5

# SQL转DSL

kibana

POST /_sql/translate
{
    "query": "SELECT * FROM ads_user_profile_2 where name rlike '...航' "
 	 ,"fetch_size":"1"
}
1
2
3
4
5

或

POST /_xpack/sql/translate
{
    "query": "SELECT * FROM ads_user_profile where name rlike '...航' "
 	 ,"fetch_size":"1"
}
1
2
3
4
5

/_xpack/sql/translate 已弃用

Scala调用Demo


import cn.hutool.core.codec.Base64Encoder
import cn.hutool.http.HttpUtil

/**
 * SQL转DSL语句
 *
 * @date 2022/6/28 上午10:02
 * @param esIP       ES地址 ip:port
 * @param esUsername ES用户名
 * @param esPassword ES密码
 * @author Jast
 */
class SqlConversionDSL(esIP: String, esUsername: String, esPassword: String) {


  /**
   * 查询前缀
   */
  private val queryPrefix = """{"query": """".stripMargin
  /**
   * 查询后缀
   */
  private val querySuffix = """"}""".stripMargin

  /**
   * SQL translate
   */
  private val url = s"http://${esIP}/_sql/translate"

  /**
   * SQL转换DSL
   *
   * @name convert
   * @date 2022/6/28 上午10:04
   * @return java.lang.String
   * @param sql
   * @author Jast
   */
  def convert(sql: String) = {
    val query = queryPrefix + sql + querySuffix
    val request = HttpUtil.createPost(url)
    request.header("Authorization", "Basic " + Base64Encoder.encode(esUsername + ":" + esPassword))
    request.body(query)
    request.execute().body()
  }
}

object SqlConversionDSL {
  def main(args: Array[String]): Unit = {
    val sqlConversionDSL = new SqlConversionDSL("172.16.24.143:9200", "elastic", "jast2@22#!")
    val str = sqlConversionDSL.convert("""SELECT * FROM ads_user_profile_2 where name rlike '...航' """)
    println(str)
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

查询结果,query部分为具体查询条件

"query":{"regexp":{"name.keyword":{"value":"...航","flags_value":255,"max_determinized_states":10000,"boost":1.0}}}

{"size":1000,"query":{"regexp":{"name.keyword":{"value":"...航","flags_value":255,"max_determinized_states":10000,"boost":1.0}}},"_source":false,"fields":[{"field":"age"},{"field":"aid"},{"field":"area"},{"field":"jast_update_time"},{"field":"bind_cars"},{"field":"city"},{"field":"classification"},{"field":"constellation"},{"field":"day_of_birthday"},{"field":"device_id"},{"field":"domain_type"},{"field":"education"},{"field":"first_login_contact"},{"field":"first_login_time","format":"strict_date_optional_time_nanos"},{"field":"follow_wechat_gongzhonghao"},{"field":"gender"},{"field":"have_vw_cars"},{"field":"interested_models"},{"field":"interested_type"},{"field":"is_have_kid"},{"field":"is_vw_owner"},{"field":"last_check","format":"strict_date_optional_time_nanos"},{"field":"last_deal_big_area"},{"field":"last_deal_car_model"},{"field":"last_deal_car_type"},{"field":"last_deal_city"},{"field":"last_deal_date","format":"strict_date_optional_time_nanos"},{"field":"last_deal_dealer"},{"field":"last_deal_province"},{"field":"last_deal_small_area"},{"field":"last_login_contact"},{"field":"last_login_time","format":"strict_date_optional_time_nanos"},{"field":"marital_status"},{"field":"member_level"},{"field":"member_most_consume_type"},{"field":"member_score"},{"field":"month_of_birthday"},{"field":"name"},{"field":"network_type"},{"field":"offline_channels"},{"field":"one_id"},{"field":"open_id"},{"field":"phone"},{"field":"phone_brand"},{"field":"phone_os"},{"field":"private_domain_channel_1"},{"field":"private_domain_channel_2"},{"field":"province"},{"field":"public_domain_channel_1"},{"field":"public_domain_channel_2"},{"field":"registered_contact"},{"field":"registered_time","format":"strict_date_optional_time_nanos"},{"field":"result_date","format":"strict_date_optional_time_nanos"},{"field":"search_words"},{"field":"source"},{"field":"test_drive_car_type"},{"field":"test_drive_date","format":"strict_date_optional_time_nanos"},{"field":"test_drive_dealer"},{"field":"user_type"},{"field":"user_vins"},{"field":"users_cars"},{"field":"year_of_birthday"}],"sort":[{"_doc":{"order":"asc"}}]}
1

# SQL GroupBy 截取keyword某一段进行分组查询

POST /_xpack/sql/translate
{
    "query": "SELECT SUBSTRING(jast_update_time,0,1),count(1) FROM ads_user_profile group by SUBSTRING(jast_update_time,0,1) "
   ,"fetch_size":"1"
}
1
2
3
4
5

转换为DSL

{
  "size" : 0,
  "_source" : false,
  "aggregations" : {
    "groupby" : {
      "composite" : {
        "size" : 1,
        "sources" : [
          {
            "b15264e0" : {
              "terms" : {
                "script" : {
                  "source" : "InternalSqlScriptUtils.substring(InternalQlScriptUtils.docValue(doc,params.v0),params.v1,params.v2)",
                  "lang" : "painless",
                  "params" : {
                    "v0" : "jast_update_time",
                    "v1" : 0,
                    "v2" : 1
                  }
                },
                "missing_bucket" : true,
                "value_type" : "string",
                "order" : "asc"
              }
            }
          }
        ]
      }
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 时间函数

https://wenku.baidu.com/view/997c9fdfadf8941ea76e58fafab069dc502247f1.html?wkts=1702021877344&bdQuery=ElasticSearch+sql+%E5%87%BD%E6%95%B0%E6%B8%85%E5%8D%95

https://www.elastic.co/guide/en/elasticsearch/reference/7.17/sql-functions-datetime.html

上次更新: 2023/12/11, 13:51:50
ELasticSearch监控之Cerebro
ElasticSearch优化指南

← ELasticSearch监控之Cerebro ElasticSearch优化指南→

最近更新
01
Linux可视化监控
02-26
02
Maven私服搭建
02-26
03
当ElasticSearch时间字段设置多个格式到底是用的哪个?
01-19
更多文章>
Theme by Vdoing | Copyright © 2016-2025 Jast-zsh | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式