好的想法是十分钱一打,真正无价的是能够实现这些想法的人。

社区日报 第317期 (2018-06-29)

1、玩转 Elasticsearch 的 SQL 功能
https://elasticsearch.cn/article/687
2、重写Elasticsearch Ik插件
http://t.cn/RrWjbWU
3、Elasticsearch script的高级使用方式
http://t.cn/RrWjJQd 

活动预告:
1.6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2.7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:铭毅天下
归档:https://elasticsearch.cn/article/690
订阅:https://tinyletter.com/elastic-daily
 
继续阅读 »
1、玩转 Elasticsearch 的 SQL 功能
https://elasticsearch.cn/article/687
2、重写Elasticsearch Ik插件
http://t.cn/RrWjbWU
3、Elasticsearch script的高级使用方式
http://t.cn/RrWjJQd 

活动预告:
1.6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2.7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:铭毅天下
归档:https://elasticsearch.cn/article/690
订阅:https://tinyletter.com/elastic-daily
  收起阅读 »

社区日报 第316期 (2018-06-28)

  1. 利用metricbeat和jolokia监控java应用。 http://t.cn/Rr9N1fw

  2. es2.3.5修改源代码获取dismax每个字段的得分。 http://t.cn/Rr9NdSb

  3. 你真的会打 Log 吗? http://t.cn/Rr9NFh8

活动预告:

  1. 6月30日南京meetup参会报名中 https://elasticsearch.cn/m/article/647

  2. 7月21日上海meetup演讲申请中 https://elasticsearch.cn/m/article/655
继续阅读 »
  1. 利用metricbeat和jolokia监控java应用。 http://t.cn/Rr9N1fw

  2. es2.3.5修改源代码获取dismax每个字段的得分。 http://t.cn/Rr9NdSb

  3. 你真的会打 Log 吗? http://t.cn/Rr9NFh8

活动预告:

  1. 6月30日南京meetup参会报名中 https://elasticsearch.cn/m/article/647

  2. 7月21日上海meetup演讲申请中 https://elasticsearch.cn/m/article/655
收起阅读 »

Elastic 社区电台第三期,嘉宾:徐胜/张延明@饿了么

Elastic Podcast 改名为 Elastic 社区电台了!

Elastic_CommRadio_500px.jpg

 
欢迎来到 Elastic 社区电台的第三期节目,本期嘉宾是来自上海的饿了么的两位技术负责人,饿了么是中国专业的网上订餐平台,饿了么最早从 2.3 版本开始使用 ES,从最早的 12 个集群 100个节点,每天 400 万单,到如今达到 32 个集群,300 多个节点,千万个索引,总数据量达到 60 TB,共 10 几个业务系统的接入,每天高峰处理超 800 万单数据,搜索推荐、用户交易、后台营销等都是通过 ES 来实现,欢迎收听本期节目来了解饿了么具体是如何应用 ES 以及在规模化过程中遇到的挑战。

主持人:
Elastic 技术布道师,曾勇(Medcl)。

嘉宾:
张延明,饿了么运维专家,主要 ES 的部署、运维、JVM 性能优化。曾供职于腾讯等大公司,在业务和基础运维方面有十年的工作经验,对 ES、Kafka 等分布式技术具有强烈的兴趣,一直负责核心业务场景的运维部署。

徐胜,饿了么 ES 的负责人,主要是负责 ES 的平台化研发,ES 集群和查询性能优化。负责基于 ES 构建通用搜索引擎平台。对分布式计算、大数据具有浓厚的兴趣,在 ES 分布式搜索、大数据计算、聚合统计分析、性能优化等业务场景积累了三年经验。

可以点击下面的任意链接来收听(时长约 50 分钟):


关于 Elastic 社区电台
Elastic 开源社区举办的一款播客类节目, 邀请来自开源社区的用户,一起聊聊 Elastic 开源产品的使用案例、经验分享、架构变迁等等。

关于饿了么
“饿了么”是中国专业的餐饮O2O平台,由拉扎斯网络科技(上海)有限公司开发运营。 作为中国餐饮业数字化领跑者,“饿了么”秉承激情、极致、创新之信仰,以建立全面完善的数字化餐饮生态系统为使命,为用户提供便捷服务极致体验,为餐厅提供一体化运营解决方案,推进整个餐饮行业的数字化发展进程。
继续阅读 »
Elastic Podcast 改名为 Elastic 社区电台了!

Elastic_CommRadio_500px.jpg

 
欢迎来到 Elastic 社区电台的第三期节目,本期嘉宾是来自上海的饿了么的两位技术负责人,饿了么是中国专业的网上订餐平台,饿了么最早从 2.3 版本开始使用 ES,从最早的 12 个集群 100个节点,每天 400 万单,到如今达到 32 个集群,300 多个节点,千万个索引,总数据量达到 60 TB,共 10 几个业务系统的接入,每天高峰处理超 800 万单数据,搜索推荐、用户交易、后台营销等都是通过 ES 来实现,欢迎收听本期节目来了解饿了么具体是如何应用 ES 以及在规模化过程中遇到的挑战。

主持人:
Elastic 技术布道师,曾勇(Medcl)。

嘉宾:
张延明,饿了么运维专家,主要 ES 的部署、运维、JVM 性能优化。曾供职于腾讯等大公司,在业务和基础运维方面有十年的工作经验,对 ES、Kafka 等分布式技术具有强烈的兴趣,一直负责核心业务场景的运维部署。

徐胜,饿了么 ES 的负责人,主要是负责 ES 的平台化研发,ES 集群和查询性能优化。负责基于 ES 构建通用搜索引擎平台。对分布式计算、大数据具有浓厚的兴趣,在 ES 分布式搜索、大数据计算、聚合统计分析、性能优化等业务场景积累了三年经验。

可以点击下面的任意链接来收听(时长约 50 分钟):


关于 Elastic 社区电台
Elastic 开源社区举办的一款播客类节目, 邀请来自开源社区的用户,一起聊聊 Elastic 开源产品的使用案例、经验分享、架构变迁等等。

关于饿了么
“饿了么”是中国专业的餐饮O2O平台,由拉扎斯网络科技(上海)有限公司开发运营。 作为中国餐饮业数字化领跑者,“饿了么”秉承激情、极致、创新之信仰,以建立全面完善的数字化餐饮生态系统为使命,为用户提供便捷服务极致体验,为餐厅提供一体化运营解决方案,推进整个餐饮行业的数字化发展进程。 收起阅读 »

玩转 Elasticsearch 的 SQL 功能

最近发布的 Elasticsearch 6.3 包含了大家期待已久的 SQL 特性,今天给大家介绍一下具体的使用方法。

首先看看接口的支持情况

目前支持的 SQL 只能进行数据的查询只读操作,不能进行数据的修改,所以我们的数据插入还是要走之前的常规索引接口。

目前 Elasticsearch 的支持 SQL 命令只有以下几个:

命令 说明
DESC table 用来描述索引的字段属性
SHOW COLUMNS 功能同上,只是别名
SHOW FUNCTIONS 列出支持的函数列表,支持通配符过滤
SHOW TABLES 返回索引列表
SELECT .. FROM table_name WHERE .. GROUP BY .. HAVING .. ORDER BY .. LIMIT .. 用来执行查询的命令

我们分别来看一下各自怎么用,以及有什么效果吧,自己也可以动手试一下,看看。

首先,我们创建一条数据:

POST twitter/doc/
{
  "name":"medcl",
  "twitter":"sql is awesome",
  "date":"2018-07-27",
  "id":123
}

RESTful下调用SQL

在 ES 里面执行 SQL 语句,有三种方式,第一种是 RESTful 方式,第二种是 SQL-CLI 命令行工具,第三种是通过 JDBC 来连接 ES,执行的 SQL 语句其实都一样,我们先以 RESTful 方式来说明用法。

RESTful 的语法如下:

POST /_xpack/sql?format=txt
{
    "query": "SELECT * FROM twitter"
}

因为 SQL 特性是 xpack 的免费功能,所以是在 _xpack 这个路径下面,我们只需要把 SQL 语句传给 query 字段就行了,注意最后面不要加上 ; 结尾,注意是不要!

我们执行上面的语句,查询返回的结果如下:

          date          |      id       |     name      |    twitter    
------------------------+---------------+---------------+---------------
2018-07-27T00:00:00.000Z|123            |medcl          |sql is awesome 

ES 俨然已经变成 SQL 数据库了,我们再看看如何获取所有的索引列表:

POST /_xpack/sql?format=txt
{
    "query": "SHOW tables"
}

返回如下:

              name               |     type      
---------------------------------+---------------
.kibana                          |BASE TABLE     
.monitoring-alerts-6             |BASE TABLE     
.monitoring-es-6-2018.06.21      |BASE TABLE     
.monitoring-es-6-2018.06.26      |BASE TABLE     
.monitoring-es-6-2018.06.27      |BASE TABLE     
.monitoring-kibana-6-2018.06.21  |BASE TABLE     
.monitoring-kibana-6-2018.06.26  |BASE TABLE     
.monitoring-kibana-6-2018.06.27  |BASE TABLE     
.monitoring-logstash-6-2018.06.20|BASE TABLE     
.reporting-2018.06.24            |BASE TABLE     
.triggered_watches               |BASE TABLE     
.watcher-history-7-2018.06.20    |BASE TABLE     
.watcher-history-7-2018.06.21    |BASE TABLE     
.watcher-history-7-2018.06.26    |BASE TABLE     
.watcher-history-7-2018.06.27    |BASE TABLE     
.watches                         |BASE TABLE     
apache_elastic_example           |BASE TABLE     
forum-mysql                      |BASE TABLE     
twitter      

有点多,我们可以按名称过滤,如 twitt 开头的索引,注意通配符只支持 %_,分别表示多个和单个字符(什么,不记得了,回去翻数据库的书去!):

POST /_xpack/sql?format=txt
{
    "query": "SHOW TABLES 'twit%'"
}

POST /_xpack/sql?format=txt
{
    "query": "SHOW TABLES 'twitte_'"
}

上面返回的结果都是:

     name      |     type      
---------------+---------------
twitter        |BASE TABLE     

如果要查看该索引的字段和元数据,如下:

POST /_xpack/sql?format=txt
{
    "query": "DESC twitter"
}

返回:

    column     |     type      
---------------+---------------
date           |TIMESTAMP      
id             |BIGINT         
name           |VARCHAR        
name.keyword   |VARCHAR        
twitter        |VARCHAR        
twitter.keyword|VARCHAR        

都是动态生成的字段,包含了 .keyword 字段。 还能使用下面的命令来查看,主要是兼容 SQL 语法。

POST /_xpack/sql?format=txt
{
    "query": "SHOW COLUMNS IN twitter"
}

另外,如果不记得 ES 支持哪些函数,只需要执行下面的命令,即可得到完整列表:

SHOW FUNCTIONS

返回结果如下,也就是当前6.3版本支持的所有函数,如下:

      name      |     type      
----------------+---------------
AVG             |AGGREGATE      
COUNT           |AGGREGATE      
MAX             |AGGREGATE      
MIN             |AGGREGATE      
SUM             |AGGREGATE      
STDDEV_POP      |AGGREGATE      
VAR_POP         |AGGREGATE      
PERCENTILE      |AGGREGATE      
PERCENTILE_RANK |AGGREGATE      
SUM_OF_SQUARES  |AGGREGATE      
SKEWNESS        |AGGREGATE      
KURTOSIS        |AGGREGATE      
DAY_OF_MONTH    |SCALAR         
DAY             |SCALAR         
DOM             |SCALAR         
DAY_OF_WEEK     |SCALAR         
DOW             |SCALAR         
DAY_OF_YEAR     |SCALAR         
DOY             |SCALAR         
HOUR_OF_DAY     |SCALAR         
HOUR            |SCALAR         
MINUTE_OF_DAY   |SCALAR         
MINUTE_OF_HOUR  |SCALAR         
MINUTE          |SCALAR         
SECOND_OF_MINUTE|SCALAR         
SECOND          |SCALAR         
MONTH_OF_YEAR   |SCALAR         
MONTH           |SCALAR         
YEAR            |SCALAR         
WEEK_OF_YEAR    |SCALAR         
WEEK            |SCALAR         
ABS             |SCALAR         
ACOS            |SCALAR         
ASIN            |SCALAR         
ATAN            |SCALAR         
ATAN2           |SCALAR         
CBRT            |SCALAR         
CEIL            |SCALAR         
CEILING         |SCALAR         
COS             |SCALAR         
COSH            |SCALAR         
COT             |SCALAR         
DEGREES         |SCALAR         
E               |SCALAR         
EXP             |SCALAR         
EXPM1           |SCALAR         
FLOOR           |SCALAR         
LOG             |SCALAR         
LOG10           |SCALAR         
MOD             |SCALAR         
PI              |SCALAR         
POWER           |SCALAR         
RADIANS         |SCALAR         
RANDOM          |SCALAR         
RAND            |SCALAR         
ROUND           |SCALAR         
SIGN            |SCALAR         
SIGNUM          |SCALAR         
SIN             |SCALAR         
SINH            |SCALAR         
SQRT            |SCALAR         
TAN             |SCALAR         
SCORE           |SCORE          

同样支持通配符进行过滤:

POST /_xpack/sql?format=txt
{
    "query": "SHOW FUNCTIONS 'S__'"
}

结果:

     name      |     type      
---------------+---------------
SUM            |AGGREGATE      
SIN            |SCALAR         

那如果要进行模糊搜索呢,Elasticsearch 的搜索能力大家都知道,强!在 SQL 里面,可以用 match 关键字来写,如下:

POST /_xpack/sql?format=txt
{
    "query": "SELECT SCORE(), * FROM twitter WHERE match(twitter, 'sql is') ORDER BY id DESC"
}

最后,还能试试 SELECT 里面的一些其他操作,如过滤,别名,如下:

POST /_xpack/sql?format=txt
{
    "query": "SELECT SCORE() as score,name as myname FROM twitter as mytable where name = 'medcl' OR name ='elastic' limit 5"
}

结果如下:

     score     |    myname     
---------------+---------------
0.2876821      |medcl          

或是分组和函数计算:

POST /_xpack/sql?format=txt
{
    "query": "SELECT name,max(id) as max_id FROM twitter as mytable group by name limit 5"
}

结果如下:

     name      |    max_id     
---------------+---------------
medcl          |123.0          

SQL-CLI下的使用

上面的例子基本上把 SQL 的基本命令都介绍了一遍,很多情况下,用 RESTful 可能不是很方便,那么可以试试用 CLI 命令行工具来执行 SQL 语句,妥妥的 SQL 操作体验。

切换到命令行下,启动 cli 程序即可进入命令行交互提示界面,如下:

➜  elasticsearch-6.3.0 ./bin/elasticsearch-sql-cli

     .sssssss.`                     .sssssss.
  .:sXXXXXXXXXXo`                `ohXXXXXXXXXho.
 .yXXXXXXXXXXXXXXo`            `oXXXXXXXXXXXXXXX-
.XXXXXXXXXXXXXXXXXXo`        `oXXXXXXXXXXXXXXXXXX.
.XXXXXXXXXXXXXXXXXXXXo.    .oXXXXXXXXXXXXXXXXXXXXh
.XXXXXXXXXXXXXXXXXXXXXXo``oXXXXXXXXXXXXXXXXXXXXXXy
`yXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
 `oXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo`
   `oXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo`
     `oXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo`
       `oXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo`
         `oXXXXXXXXXXXXXXXXXXXXXXXXXXXXo`
           .XXXXXXXXXXXXXXXXXXXXXXXXXo`
         .oXXXXXXXXXXXXXXXXXXXXXXXXo`
       `oXXXXXXXXXXXXXXXXXXXXXXXXo`   `odo`
     `oXXXXXXXXXXXXXXXXXXXXXXXXo`   `oXXXXXo`
   `oXXXXXXXXXXXXXXXXXXXXXXXXo`   `oXXXXXXXXXo`
 `oXXXXXXXXXXXXXXXXXXXXXXXXo`   `oXXXXXXXXXXXXXo`
`yXXXXXXXXXXXXXXXXXXXXXXXo`    oXXXXXXXXXXXXXXXXX.
.XXXXXXXXXXXXXXXXXXXXXXo`   `oXXXXXXXXXXXXXXXXXXXy
.XXXXXXXXXXXXXXXXXXXXo`     /XXXXXXXXXXXXXXXXXXXXX
.XXXXXXXXXXXXXXXXXXo`        `oXXXXXXXXXXXXXXXXXX-
 -XXXXXXXXXXXXXXXo`            `oXXXXXXXXXXXXXXXo`
  .oXXXXXXXXXXXo`                `oXXXXXXXXXXXo.
    `.sshXXyso`        SQL         `.sshXhss.`

sql> 

当你看到一个硕大的创口贴,表示 SQL 命令行已经准备就绪了,查看一下索引列表,不,数据表的列表:

15301043943573.jpg

各种操作妥妥的,上面已经测试过的命令就不在这里重复了,只是体验不一样罢了。

如果要连接远程的 ES 服务器,只需要启动命令行工具的时候,指定服务器地址,如果有加密,指定 keystone 文件,完整的帮助如下:

➜  elasticsearch-6.3.0 ./bin/elasticsearch-sql-cli --help
Elasticsearch SQL CLI

Non-option arguments:
uri                  

Option                   Description                                           
------                   -----------                                           
-c, --check <Boolean>    Enable initial connection check on startup (default:  
                           true)                                               
-d, --debug              Enable debug logging                                  
-h, --help               show help                                             
-k, --keystore_location  Location of a keystore to use when setting up SSL. If 
                           specified then the CLI will prompt for a keystore   
                           password. If specified when the uri isn't https then
                           an error is thrown.                                 
-s, --silent             show minimal output                                   
-v, --verbose            show verbose output  

JDBC 对接

JDBC 对接的能力,让我们可以与各个 SQL 生态系统打通,利用众多现成的基于 SQL 之上的工具来使用 Elasticsearch,我们以一个工具来举例。

和其他数据库一样,要使用 JDBC,要下载该数据库的 JDBC 的驱动,我们打开: https://www.elastic.co/downloads/jdbc-client

15301048139518.jpg

只有一个 zip 包下载链接,下载即可。

然后,我们这里使用 DbVisualizer 来连接 ES 进行操作,这是一个数据库的操作和分析工具,DbVisualizer 下载地址是:https://www.dbvis.com/

下载安装启动之后的程序主界面如下图:

15301049453527.jpg

我们如果要使用 ES 作为数据源,我们第一件事需要把 ES 的 JDBC 驱动添加到 DbVisualizer 的已知驱动里面。我们打开 DbVisualizer 的菜单【Tools】-> 【Driver Manager】,打开如下设置窗口:

15301054144234.jpg

点击绿色的加号按钮,新增一个名为 Elasticsearch-SQL 的驱动,url format 设置成 jdbc:es:,如下图:

15301054340439.jpg

然后点击上图黄色的文件夹按钮,添加我们刚刚下载好且解压之后的所有 jar 文件,如下:

15301055143574.jpg

添加完成之后,如下图:

15301055446598.jpg

就可以关闭这个 JDBC 驱动的管理窗口了。下面我们来连接到 ES 数据库。

选择主程序左侧的新建连接图标,打开向导,如下:

15301057385898.jpg

选择刚刚加入的 Elasticsearch-SQL 驱动:

15301057824336.jpg

设置连接字符串,此处没有登录信息,如果有可以对应的填上:

15301064989466.jpg

点击 Connect,即可连接到 ES,左侧导航可以展开看到对应的 ES 索引信息:

15301065711818.jpg

同样可以查看相应的库表结果和具体的数据:

15301066251658.jpg

用他自带的工具执行 SQL 也是不在话下:

15301068015599.jpg

同理,各种 ETL 工具和基于 SQL 的 BI 和可视化分析工具都能把 Elasticsearch 当做 SQL 数据库来连接获取数据了。

最后一个小贴士,如果你的索引名称包含横线,如 logstash-201811,只需要做一个用双引号包含,对双引号进行转义即可,如下:

POST /_xpack/sql?format=txt
{
"query":"SELECT COUNT(*) FROM \"logstash-*\""
}

关于 SQL 操作的文档在这里:

https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-jdbc.html

Enjoy!

继续阅读 »

最近发布的 Elasticsearch 6.3 包含了大家期待已久的 SQL 特性,今天给大家介绍一下具体的使用方法。

首先看看接口的支持情况

目前支持的 SQL 只能进行数据的查询只读操作,不能进行数据的修改,所以我们的数据插入还是要走之前的常规索引接口。

目前 Elasticsearch 的支持 SQL 命令只有以下几个:

命令 说明
DESC table 用来描述索引的字段属性
SHOW COLUMNS 功能同上,只是别名
SHOW FUNCTIONS 列出支持的函数列表,支持通配符过滤
SHOW TABLES 返回索引列表
SELECT .. FROM table_name WHERE .. GROUP BY .. HAVING .. ORDER BY .. LIMIT .. 用来执行查询的命令

我们分别来看一下各自怎么用,以及有什么效果吧,自己也可以动手试一下,看看。

首先,我们创建一条数据:

POST twitter/doc/
{
  "name":"medcl",
  "twitter":"sql is awesome",
  "date":"2018-07-27",
  "id":123
}

RESTful下调用SQL

在 ES 里面执行 SQL 语句,有三种方式,第一种是 RESTful 方式,第二种是 SQL-CLI 命令行工具,第三种是通过 JDBC 来连接 ES,执行的 SQL 语句其实都一样,我们先以 RESTful 方式来说明用法。

RESTful 的语法如下:

POST /_xpack/sql?format=txt
{
    "query": "SELECT * FROM twitter"
}

因为 SQL 特性是 xpack 的免费功能,所以是在 _xpack 这个路径下面,我们只需要把 SQL 语句传给 query 字段就行了,注意最后面不要加上 ; 结尾,注意是不要!

我们执行上面的语句,查询返回的结果如下:

          date          |      id       |     name      |    twitter    
------------------------+---------------+---------------+---------------
2018-07-27T00:00:00.000Z|123            |medcl          |sql is awesome 

ES 俨然已经变成 SQL 数据库了,我们再看看如何获取所有的索引列表:

POST /_xpack/sql?format=txt
{
    "query": "SHOW tables"
}

返回如下:

              name               |     type      
---------------------------------+---------------
.kibana                          |BASE TABLE     
.monitoring-alerts-6             |BASE TABLE     
.monitoring-es-6-2018.06.21      |BASE TABLE     
.monitoring-es-6-2018.06.26      |BASE TABLE     
.monitoring-es-6-2018.06.27      |BASE TABLE     
.monitoring-kibana-6-2018.06.21  |BASE TABLE     
.monitoring-kibana-6-2018.06.26  |BASE TABLE     
.monitoring-kibana-6-2018.06.27  |BASE TABLE     
.monitoring-logstash-6-2018.06.20|BASE TABLE     
.reporting-2018.06.24            |BASE TABLE     
.triggered_watches               |BASE TABLE     
.watcher-history-7-2018.06.20    |BASE TABLE     
.watcher-history-7-2018.06.21    |BASE TABLE     
.watcher-history-7-2018.06.26    |BASE TABLE     
.watcher-history-7-2018.06.27    |BASE TABLE     
.watches                         |BASE TABLE     
apache_elastic_example           |BASE TABLE     
forum-mysql                      |BASE TABLE     
twitter      

有点多,我们可以按名称过滤,如 twitt 开头的索引,注意通配符只支持 %_,分别表示多个和单个字符(什么,不记得了,回去翻数据库的书去!):

POST /_xpack/sql?format=txt
{
    "query": "SHOW TABLES 'twit%'"
}

POST /_xpack/sql?format=txt
{
    "query": "SHOW TABLES 'twitte_'"
}

上面返回的结果都是:

     name      |     type      
---------------+---------------
twitter        |BASE TABLE     

如果要查看该索引的字段和元数据,如下:

POST /_xpack/sql?format=txt
{
    "query": "DESC twitter"
}

返回:

    column     |     type      
---------------+---------------
date           |TIMESTAMP      
id             |BIGINT         
name           |VARCHAR        
name.keyword   |VARCHAR        
twitter        |VARCHAR        
twitter.keyword|VARCHAR        

都是动态生成的字段,包含了 .keyword 字段。 还能使用下面的命令来查看,主要是兼容 SQL 语法。

POST /_xpack/sql?format=txt
{
    "query": "SHOW COLUMNS IN twitter"
}

另外,如果不记得 ES 支持哪些函数,只需要执行下面的命令,即可得到完整列表:

SHOW FUNCTIONS

返回结果如下,也就是当前6.3版本支持的所有函数,如下:

      name      |     type      
----------------+---------------
AVG             |AGGREGATE      
COUNT           |AGGREGATE      
MAX             |AGGREGATE      
MIN             |AGGREGATE      
SUM             |AGGREGATE      
STDDEV_POP      |AGGREGATE      
VAR_POP         |AGGREGATE      
PERCENTILE      |AGGREGATE      
PERCENTILE_RANK |AGGREGATE      
SUM_OF_SQUARES  |AGGREGATE      
SKEWNESS        |AGGREGATE      
KURTOSIS        |AGGREGATE      
DAY_OF_MONTH    |SCALAR         
DAY             |SCALAR         
DOM             |SCALAR         
DAY_OF_WEEK     |SCALAR         
DOW             |SCALAR         
DAY_OF_YEAR     |SCALAR         
DOY             |SCALAR         
HOUR_OF_DAY     |SCALAR         
HOUR            |SCALAR         
MINUTE_OF_DAY   |SCALAR         
MINUTE_OF_HOUR  |SCALAR         
MINUTE          |SCALAR         
SECOND_OF_MINUTE|SCALAR         
SECOND          |SCALAR         
MONTH_OF_YEAR   |SCALAR         
MONTH           |SCALAR         
YEAR            |SCALAR         
WEEK_OF_YEAR    |SCALAR         
WEEK            |SCALAR         
ABS             |SCALAR         
ACOS            |SCALAR         
ASIN            |SCALAR         
ATAN            |SCALAR         
ATAN2           |SCALAR         
CBRT            |SCALAR         
CEIL            |SCALAR         
CEILING         |SCALAR         
COS             |SCALAR         
COSH            |SCALAR         
COT             |SCALAR         
DEGREES         |SCALAR         
E               |SCALAR         
EXP             |SCALAR         
EXPM1           |SCALAR         
FLOOR           |SCALAR         
LOG             |SCALAR         
LOG10           |SCALAR         
MOD             |SCALAR         
PI              |SCALAR         
POWER           |SCALAR         
RADIANS         |SCALAR         
RANDOM          |SCALAR         
RAND            |SCALAR         
ROUND           |SCALAR         
SIGN            |SCALAR         
SIGNUM          |SCALAR         
SIN             |SCALAR         
SINH            |SCALAR         
SQRT            |SCALAR         
TAN             |SCALAR         
SCORE           |SCORE          

同样支持通配符进行过滤:

POST /_xpack/sql?format=txt
{
    "query": "SHOW FUNCTIONS 'S__'"
}

结果:

     name      |     type      
---------------+---------------
SUM            |AGGREGATE      
SIN            |SCALAR         

那如果要进行模糊搜索呢,Elasticsearch 的搜索能力大家都知道,强!在 SQL 里面,可以用 match 关键字来写,如下:

POST /_xpack/sql?format=txt
{
    "query": "SELECT SCORE(), * FROM twitter WHERE match(twitter, 'sql is') ORDER BY id DESC"
}

最后,还能试试 SELECT 里面的一些其他操作,如过滤,别名,如下:

POST /_xpack/sql?format=txt
{
    "query": "SELECT SCORE() as score,name as myname FROM twitter as mytable where name = 'medcl' OR name ='elastic' limit 5"
}

结果如下:

     score     |    myname     
---------------+---------------
0.2876821      |medcl          

或是分组和函数计算:

POST /_xpack/sql?format=txt
{
    "query": "SELECT name,max(id) as max_id FROM twitter as mytable group by name limit 5"
}

结果如下:

     name      |    max_id     
---------------+---------------
medcl          |123.0          

SQL-CLI下的使用

上面的例子基本上把 SQL 的基本命令都介绍了一遍,很多情况下,用 RESTful 可能不是很方便,那么可以试试用 CLI 命令行工具来执行 SQL 语句,妥妥的 SQL 操作体验。

切换到命令行下,启动 cli 程序即可进入命令行交互提示界面,如下:

➜  elasticsearch-6.3.0 ./bin/elasticsearch-sql-cli

     .sssssss.`                     .sssssss.
  .:sXXXXXXXXXXo`                `ohXXXXXXXXXho.
 .yXXXXXXXXXXXXXXo`            `oXXXXXXXXXXXXXXX-
.XXXXXXXXXXXXXXXXXXo`        `oXXXXXXXXXXXXXXXXXX.
.XXXXXXXXXXXXXXXXXXXXo.    .oXXXXXXXXXXXXXXXXXXXXh
.XXXXXXXXXXXXXXXXXXXXXXo``oXXXXXXXXXXXXXXXXXXXXXXy
`yXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
 `oXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo`
   `oXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo`
     `oXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo`
       `oXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXo`
         `oXXXXXXXXXXXXXXXXXXXXXXXXXXXXo`
           .XXXXXXXXXXXXXXXXXXXXXXXXXo`
         .oXXXXXXXXXXXXXXXXXXXXXXXXo`
       `oXXXXXXXXXXXXXXXXXXXXXXXXo`   `odo`
     `oXXXXXXXXXXXXXXXXXXXXXXXXo`   `oXXXXXo`
   `oXXXXXXXXXXXXXXXXXXXXXXXXo`   `oXXXXXXXXXo`
 `oXXXXXXXXXXXXXXXXXXXXXXXXo`   `oXXXXXXXXXXXXXo`
`yXXXXXXXXXXXXXXXXXXXXXXXo`    oXXXXXXXXXXXXXXXXX.
.XXXXXXXXXXXXXXXXXXXXXXo`   `oXXXXXXXXXXXXXXXXXXXy
.XXXXXXXXXXXXXXXXXXXXo`     /XXXXXXXXXXXXXXXXXXXXX
.XXXXXXXXXXXXXXXXXXo`        `oXXXXXXXXXXXXXXXXXX-
 -XXXXXXXXXXXXXXXo`            `oXXXXXXXXXXXXXXXo`
  .oXXXXXXXXXXXo`                `oXXXXXXXXXXXo.
    `.sshXXyso`        SQL         `.sshXhss.`

sql> 

当你看到一个硕大的创口贴,表示 SQL 命令行已经准备就绪了,查看一下索引列表,不,数据表的列表:

15301043943573.jpg

各种操作妥妥的,上面已经测试过的命令就不在这里重复了,只是体验不一样罢了。

如果要连接远程的 ES 服务器,只需要启动命令行工具的时候,指定服务器地址,如果有加密,指定 keystone 文件,完整的帮助如下:

➜  elasticsearch-6.3.0 ./bin/elasticsearch-sql-cli --help
Elasticsearch SQL CLI

Non-option arguments:
uri                  

Option                   Description                                           
------                   -----------                                           
-c, --check <Boolean>    Enable initial connection check on startup (default:  
                           true)                                               
-d, --debug              Enable debug logging                                  
-h, --help               show help                                             
-k, --keystore_location  Location of a keystore to use when setting up SSL. If 
                           specified then the CLI will prompt for a keystore   
                           password. If specified when the uri isn't https then
                           an error is thrown.                                 
-s, --silent             show minimal output                                   
-v, --verbose            show verbose output  

JDBC 对接

JDBC 对接的能力,让我们可以与各个 SQL 生态系统打通,利用众多现成的基于 SQL 之上的工具来使用 Elasticsearch,我们以一个工具来举例。

和其他数据库一样,要使用 JDBC,要下载该数据库的 JDBC 的驱动,我们打开: https://www.elastic.co/downloads/jdbc-client

15301048139518.jpg

只有一个 zip 包下载链接,下载即可。

然后,我们这里使用 DbVisualizer 来连接 ES 进行操作,这是一个数据库的操作和分析工具,DbVisualizer 下载地址是:https://www.dbvis.com/

下载安装启动之后的程序主界面如下图:

15301049453527.jpg

我们如果要使用 ES 作为数据源,我们第一件事需要把 ES 的 JDBC 驱动添加到 DbVisualizer 的已知驱动里面。我们打开 DbVisualizer 的菜单【Tools】-> 【Driver Manager】,打开如下设置窗口:

15301054144234.jpg

点击绿色的加号按钮,新增一个名为 Elasticsearch-SQL 的驱动,url format 设置成 jdbc:es:,如下图:

15301054340439.jpg

然后点击上图黄色的文件夹按钮,添加我们刚刚下载好且解压之后的所有 jar 文件,如下:

15301055143574.jpg

添加完成之后,如下图:

15301055446598.jpg

就可以关闭这个 JDBC 驱动的管理窗口了。下面我们来连接到 ES 数据库。

选择主程序左侧的新建连接图标,打开向导,如下:

15301057385898.jpg

选择刚刚加入的 Elasticsearch-SQL 驱动:

15301057824336.jpg

设置连接字符串,此处没有登录信息,如果有可以对应的填上:

15301064989466.jpg

点击 Connect,即可连接到 ES,左侧导航可以展开看到对应的 ES 索引信息:

15301065711818.jpg

同样可以查看相应的库表结果和具体的数据:

15301066251658.jpg

用他自带的工具执行 SQL 也是不在话下:

15301068015599.jpg

同理,各种 ETL 工具和基于 SQL 的 BI 和可视化分析工具都能把 Elasticsearch 当做 SQL 数据库来连接获取数据了。

最后一个小贴士,如果你的索引名称包含横线,如 logstash-201811,只需要做一个用双引号包含,对双引号进行转义即可,如下:

POST /_xpack/sql?format=txt
{
"query":"SELECT COUNT(*) FROM \"logstash-*\""
}

关于 SQL 操作的文档在这里:

https://www.elastic.co/guide/en/elasticsearch/reference/current/sql-jdbc.html

Enjoy!

收起阅读 »

社区日报 第315期 (2018-06-27)

1. 浅谈ES技术与实践
http://t.cn/RBaaEP1 
2.日志采集中的关键技术分析
http://t.cn/RroGKAZ 
3.基于微服务的日志中心设计、实现与关键配置
http://t.cn/RBSE3Mx 
 
活动预告
1. 6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2. 7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 
 
编辑:江水
归档:https://elasticsearch.cn/article/686
订阅:https://tinyletter.com/elastic-daily
 
继续阅读 »
1. 浅谈ES技术与实践
http://t.cn/RBaaEP1 
2.日志采集中的关键技术分析
http://t.cn/RroGKAZ 
3.基于微服务的日志中心设计、实现与关键配置
http://t.cn/RBSE3Mx 
 
活动预告
1. 6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2. 7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 
 
编辑:江水
归档:https://elasticsearch.cn/article/686
订阅:https://tinyletter.com/elastic-daily
  收起阅读 »

[杭州滨江] [PingPong 金融] 招聘 Java 高级工程师

PingPong 金融是家极其低调又极具实力的独角兽公司,作为中国第一家获得欧洲支付牌照的民营公司,目前在跨境收款这个风口处于领先地位,公司继去年的 B 轮之后,现在又敲定 C 轮融资了。

我司已经自建 IDC 搭建大数据中心,微服务上线如火如荼,Spark, Hadoop, HBase, MongoDB, Dubbo, RocketMQ, Elasticsearch 等大公司用的技术,我们全部都有用,我们完全拥抱开源,18 年我们已经准备自研一些开源的 framework,也愿意为开源贡献力量。

我们招聘技术大牛了,先贴下公司福利:

最新版 MacBook Pro 或 Surface 随你挑

每天下午水果 + 晚上免费晚餐

每年 15 天年假 + 每月 2k 加班费 + 3 个月以上的年终

生日礼品 + 每月团建费 + 节日聚餐 + 买书报销

继续贴 JD:

============================================================

高级 Java 工程师职位描述(薪资 25-40K):

岗位职责

1.带领团队完成产品开发,承担技术 leader 和项目经理角色;

2.负责系统后端核心 API 的编写;

3.负责公司各平台的对接工作;

4.根据业务需求合理设计和扩展;

岗位要求

1.Java 基础扎实,精通多线程、并发、集合、网络、IO 等基础知识,熟悉 Http、TCP/IP 等协议;

2.熟练使用 SpringBoot、Mybatis 等常用的框架并了解其工作原理;

3.熟悉 RocketMQ、Dubbo、Zookeeper 等开源技术的使用以及工作原理;

4.熟悉 MySql、HBase、Elasticsearch、Redis 等的运用以及原理,优秀的 SQL 编写能力以及调优能力;

5.思维清晰,能独立分析并解决遇到的问题,丰富的系统设计能力以及服务化设计能力;

6.具备良好的表达能力,善于团队合作、具备非常良好的责任心以及 Owner 意识,具备独立解决问题能力;

有意向的请发简历到邮箱: jiwg#pingpongx.com, 最后感谢各位的阅读.
继续阅读 »
PingPong 金融是家极其低调又极具实力的独角兽公司,作为中国第一家获得欧洲支付牌照的民营公司,目前在跨境收款这个风口处于领先地位,公司继去年的 B 轮之后,现在又敲定 C 轮融资了。

我司已经自建 IDC 搭建大数据中心,微服务上线如火如荼,Spark, Hadoop, HBase, MongoDB, Dubbo, RocketMQ, Elasticsearch 等大公司用的技术,我们全部都有用,我们完全拥抱开源,18 年我们已经准备自研一些开源的 framework,也愿意为开源贡献力量。

我们招聘技术大牛了,先贴下公司福利:

最新版 MacBook Pro 或 Surface 随你挑

每天下午水果 + 晚上免费晚餐

每年 15 天年假 + 每月 2k 加班费 + 3 个月以上的年终

生日礼品 + 每月团建费 + 节日聚餐 + 买书报销

继续贴 JD:

============================================================

高级 Java 工程师职位描述(薪资 25-40K):

岗位职责

1.带领团队完成产品开发,承担技术 leader 和项目经理角色;

2.负责系统后端核心 API 的编写;

3.负责公司各平台的对接工作;

4.根据业务需求合理设计和扩展;

岗位要求

1.Java 基础扎实,精通多线程、并发、集合、网络、IO 等基础知识,熟悉 Http、TCP/IP 等协议;

2.熟练使用 SpringBoot、Mybatis 等常用的框架并了解其工作原理;

3.熟悉 RocketMQ、Dubbo、Zookeeper 等开源技术的使用以及工作原理;

4.熟悉 MySql、HBase、Elasticsearch、Redis 等的运用以及原理,优秀的 SQL 编写能力以及调优能力;

5.思维清晰,能独立分析并解决遇到的问题,丰富的系统设计能力以及服务化设计能力;

6.具备良好的表达能力,善于团队合作、具备非常良好的责任心以及 Owner 意识,具备独立解决问题能力;

有意向的请发简历到邮箱: jiwg#pingpongx.com, 最后感谢各位的阅读. 收起阅读 »

社区日报 第314期 (2018-06-26)

1.亿级Elasticsearch的性能优化。
http://t.cn/RrMM9zJ 
2.优化搜索引擎相关性的一些方案。
http://t.cn/RrMMjmj 
3.(自备翻墙)使用Elasticsearch构建一个真实应用。
http://t.cn/RrMMpdf 

活动预告
1. 6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2. 7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:叮咚光军
归档:https://elasticsearch.cn/article/684 
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.亿级Elasticsearch的性能优化。
http://t.cn/RrMM9zJ 
2.优化搜索引擎相关性的一些方案。
http://t.cn/RrMMjmj 
3.(自备翻墙)使用Elasticsearch构建一个真实应用。
http://t.cn/RrMMpdf 

活动预告
1. 6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2. 7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:叮咚光军
归档:https://elasticsearch.cn/article/684 
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

【线下活动】【袋鼠云技术团队】2018-06-30-杭州-Devops运维沙龙

Devops运维沙龙.png

 活动简介:

互联网时代,创新、高效、速度是企业保持核心竞争力的必要条件。DevOps被描述为“开发团队与运营团队之间更具协作性、更高效的关系”。本次活动邀请到阿里云Docker团队,ES团队、袋鼠云日志团队的同学从各个方面向大家介绍Devops的实践经验,帮助企业更敏捷、更自动化、更高效地实现持续交付。
 
主办方:袋鼠云

特别支持:养码场、高效运维社区、DBAPLUS、Elastic中文社区、阿里云、跨星、杭州创业大街

报名平台:活动行

直播支持:IT大咖说

活动时间:2018年6月30日13:00-17:00

活动地点:杭州市滨江区阡陌路459号聚光中心内 杭州创业大街C1-105室跨星空间
 
分享嘉宾:

赵汉青圆形.jpg


赵汉青 阿里巴巴集团搜索事业部 高级工程师

Elasticsearch运维实践分享

简介:2014年硕士毕业于中国科学技术大学 曾就职于思科系统(中国)研发有限公司云服务部,本次主题针对Elasticsearch集群运维:监控,诊断,优化,升级进行详细的介绍,并向大家分享阿里云Elasticsearch服务。

30943092626455172.jpg

南方   袋鼠云日志产品经理

企业日志中心建设思路
 
简介:企业日志中心建设是一个整体和复杂的过程,本次主题向大家分享袋鼠云日志产品在迭代过程踩过的坑,并通过什么样的方案去解决这些问题,同时向大家分享我们在天弘基金、新网银行中建设企业日志中心中的几个实践案例。

朱延生圆形.jpg


朱延生   阿里云Docker团队专家

​Kubernetes日志实践

简介:从第一代PaaS平台cloudfoundry到现在的kubernetes容器编排平台,一直从事关于容器云平台研发及解决方案相关工作。容器时代越来越多的传统应用将会逐渐容器化,那么如何在应用容器化过程中方便快捷地自动发现和采集应用日志、如何与日志存储系统协同来高效存储和搜索应用日志将会是关键;本次分享主要介绍容器原生日志输出到容器日志的自动发现与采集,以及高性能容器日志采集部署架构及性能测试。

30363093978132308.png


直播报名

30963093980632463.jpeg


​线下报名

欢迎关注“袋鼠云技术团队”微信公众号,获取最新线下及线上活动信息。

qrcode_for_gh_cd7aa4cb729b_258.jpg



Devops运维沙龙.png



继续阅读 »
Devops运维沙龙.png

 活动简介:

互联网时代,创新、高效、速度是企业保持核心竞争力的必要条件。DevOps被描述为“开发团队与运营团队之间更具协作性、更高效的关系”。本次活动邀请到阿里云Docker团队,ES团队、袋鼠云日志团队的同学从各个方面向大家介绍Devops的实践经验,帮助企业更敏捷、更自动化、更高效地实现持续交付。
 
主办方:袋鼠云

特别支持:养码场、高效运维社区、DBAPLUS、Elastic中文社区、阿里云、跨星、杭州创业大街

报名平台:活动行

直播支持:IT大咖说

活动时间:2018年6月30日13:00-17:00

活动地点:杭州市滨江区阡陌路459号聚光中心内 杭州创业大街C1-105室跨星空间
 
分享嘉宾:

赵汉青圆形.jpg


赵汉青 阿里巴巴集团搜索事业部 高级工程师

Elasticsearch运维实践分享

简介:2014年硕士毕业于中国科学技术大学 曾就职于思科系统(中国)研发有限公司云服务部,本次主题针对Elasticsearch集群运维:监控,诊断,优化,升级进行详细的介绍,并向大家分享阿里云Elasticsearch服务。

30943092626455172.jpg

南方   袋鼠云日志产品经理

企业日志中心建设思路
 
简介:企业日志中心建设是一个整体和复杂的过程,本次主题向大家分享袋鼠云日志产品在迭代过程踩过的坑,并通过什么样的方案去解决这些问题,同时向大家分享我们在天弘基金、新网银行中建设企业日志中心中的几个实践案例。

朱延生圆形.jpg


朱延生   阿里云Docker团队专家

​Kubernetes日志实践

简介:从第一代PaaS平台cloudfoundry到现在的kubernetes容器编排平台,一直从事关于容器云平台研发及解决方案相关工作。容器时代越来越多的传统应用将会逐渐容器化,那么如何在应用容器化过程中方便快捷地自动发现和采集应用日志、如何与日志存储系统协同来高效存储和搜索应用日志将会是关键;本次分享主要介绍容器原生日志输出到容器日志的自动发现与采集,以及高性能容器日志采集部署架构及性能测试。

30363093978132308.png


直播报名

30963093980632463.jpeg


​线下报名

欢迎关注“袋鼠云技术团队”微信公众号,获取最新线下及线上活动信息。

qrcode_for_gh_cd7aa4cb729b_258.jpg



Devops运维沙龙.png



收起阅读 »

社区日报 第313期 (2018-06-25)

1.kibana在搜索上面的改进和提升。
http://t.cn/Rrq9Hh5

2.ES集群服务器CPU负载瞬间飚高分析。
https://elasticsearch.cn/article/348

3.SSD硬盘寿命对于ES的性能影响?
https://elasticsearch.cn/question/1932 

活动预告

1. 6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647

2. 7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:cyberdak
归档:https://elasticsearch.cn/article/682
订阅:https://tinyletter.com/elastic-daily
 
继续阅读 »
1.kibana在搜索上面的改进和提升。
http://t.cn/Rrq9Hh5

2.ES集群服务器CPU负载瞬间飚高分析。
https://elasticsearch.cn/article/348

3.SSD硬盘寿命对于ES的性能影响?
https://elasticsearch.cn/question/1932 

活动预告

1. 6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647

2. 7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:cyberdak
归档:https://elasticsearch.cn/article/682
订阅:https://tinyletter.com/elastic-daily
  收起阅读 »

社区日报 第312期 (2018-06-24)

1.为SIEM使用ELK Stack。
http://t.cn/RrGFxIr
2.5大商业SIEM工具。
http://t.cn/RrGFBEa
3.(自备梯子)作为数据科学家不被聘用的4种错误方法?
http://t.cn/RrGDSGi 
 
活动预告:
1.6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2.7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:至尊宝
归档:https://elasticsearch.cn/article/681
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.为SIEM使用ELK Stack。
http://t.cn/RrGFxIr
2.5大商业SIEM工具。
http://t.cn/RrGFBEa
3.(自备梯子)作为数据科学家不被聘用的4种错误方法?
http://t.cn/RrGDSGi 
 
活动预告:
1.6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2.7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:至尊宝
归档:https://elasticsearch.cn/article/681
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第311期 (2018-06-23)

  1. 基于hanlp的ES分词插件(可以作为IK的补充)。 http://t.cn/RrAUlTZ

  2. Berlin Buzzword 2018中ES开发人员的演讲(需翻墙)。 http://t.cn/RrAcrKY

  3. 一周热点:一个正则表达式引发的惨案。 http://t.cn/RrAVq9K

活动预告

  1. 6月30日南京meetup参会报名中 https://elasticsearch.cn/m/article/647

  2. 7月21日上海meetup演讲申请中 https://elasticsearch.cn/m/article/655
继续阅读 »
  1. 基于hanlp的ES分词插件(可以作为IK的补充)。 http://t.cn/RrAUlTZ

  2. Berlin Buzzword 2018中ES开发人员的演讲(需翻墙)。 http://t.cn/RrAcrKY

  3. 一周热点:一个正则表达式引发的惨案。 http://t.cn/RrAVq9K

活动预告

  1. 6月30日南京meetup参会报名中 https://elasticsearch.cn/m/article/647

  2. 7月21日上海meetup演讲申请中 https://elasticsearch.cn/m/article/655
收起阅读 »

社区日报 第310期 (2018-06-22)

1、Elastic 社区电台 第三期,嘉宾:徐胜、张延明@饿了么
http://t.cn/Rrz2mog
2、spring boot elasticsearch 5.x/6.x版本整合详解
http://t.cn/Rrz57ZR
3、elasticsearchr: R语言轻量级的Elasticsearch客户端
http://t.cn/Rrzqk9o

活动预告:
1.6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2.7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:铭毅天下
归档:https://elasticsearch.cn/article/679
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1、Elastic 社区电台 第三期,嘉宾:徐胜、张延明@饿了么
http://t.cn/Rrz2mog
2、spring boot elasticsearch 5.x/6.x版本整合详解
http://t.cn/Rrz57ZR
3、elasticsearchr: R语言轻量级的Elasticsearch客户端
http://t.cn/Rrzqk9o

活动预告:
1.6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2.7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:铭毅天下
归档:https://elasticsearch.cn/article/679
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第309期 (2018-06-21)

1.一个在kibana页面进行计算的插件
http://t.cn/Rrvs0I0
2.Elasticsearch:跨集群数据迁移之离线迁移
http://t.cn/RrvsYkX
3.如何使用LogStash将SQL Server数据复制到Elasticsearch
http://t.cn/RrvsR1m

活动预告:
1.6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2.7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:金桥
归档:https://elasticsearch.cn/article/678
订阅:https://tinyletter.com/elastic-daily
继续阅读 »
1.一个在kibana页面进行计算的插件
http://t.cn/Rrvs0I0
2.Elasticsearch:跨集群数据迁移之离线迁移
http://t.cn/RrvsYkX
3.如何使用LogStash将SQL Server数据复制到Elasticsearch
http://t.cn/RrvsR1m

活动预告:
1.6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2.7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 

编辑:金桥
归档:https://elasticsearch.cn/article/678
订阅:https://tinyletter.com/elastic-daily 收起阅读 »

社区日报 第308期 (2018-06-20)

1. 从ELK到EFK
http://t.cn/ROrGdqr 
2.两个Elaticsearch查询问题分析
http://t.cn/RBI7tSI 
3.Elasticsearch filter和query的不同
http://t.cn/R1Gs2NG 
 
活动预告
1. 6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2. 7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 
 
编辑:江水
归档:https://elasticsearch.cn/article/677
订阅:https://tinyletter.com/elastic-daily
 
继续阅读 »
1. 从ELK到EFK
http://t.cn/ROrGdqr 
2.两个Elaticsearch查询问题分析
http://t.cn/RBI7tSI 
3.Elasticsearch filter和query的不同
http://t.cn/R1Gs2NG 
 
活动预告
1. 6月30日南京meetup参会报名中
https://elasticsearch.cn/m/article/647 
2. 7月21日上海meetup演讲申请中
https://elasticsearch.cn/m/article/655 
 
编辑:江水
归档:https://elasticsearch.cn/article/677
订阅:https://tinyletter.com/elastic-daily
  收起阅读 »

有老铁测试了es6.3.0的sql功能吗?

我单机装了个6.3.0
执行的时候老出现如下错误,有老铁遇到过吗?
 
我是这么来启动的
./elasticsearch-sql-cli http://127.0.0.1:9200
sql> show tables;
name | type
----------------+---------------
hello |BASE TABLE

sql> select * from hello;
Server error [Server encountered an error [Cannot extract value [deliveraddress.address] from source]. [SqlIllegalArgumentException[Cannot extract value [deliveraddress.address] from source]
at org.elasticsearch.xpack.sql.execution.search.extractor.FieldHitExtractor.extractFromSource(FieldHitExtractor.java:139)
at org.elasticsearch.xpack.sql.execution.search.extractor.FieldHitExtractor.extract(FieldHitExtractor.java:95)
at org.elasticsearch.xpack.sql.execution.search.SearchHitRowSet.getColumn(SearchHitRowSet.java:114)
at org.elasticsearch.xpack.sql.session.AbstractRowSet.column(AbstractRowSet.java:18)
 
 
 
这是测试数据的mapping
{
"test2": {
"properties": {
"deliveraddress": {
"properties": {
"phone_no": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"default": {
"type": "boolean"
},
"address": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"province": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"city": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"mapping_id": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"name": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"full_address": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"zip_code": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
}
}
},
"alipaywealth": {
"properties": {
"balance": {
"type": "long"
},
"total_quotient": {
"type": "long"
},
"huabei_creditamount": {
"type": "long"
},
"mapping_id": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"huabei_totalcreditamount": {
"type": "long"
},
"total_profit": {
"type": "long"
}
}
},
"id": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
}
}
}
}

这是测试数据
{
"_id": "5b1cbc7935eb6e0007a154bb",
"deliveraddress": [
{
"phone_no": "13*******98",
"default": true,
"address": "江苏省无asdads市徐***镇",
"province": "江苏",
"city": "无锡",
"mapping_id": "3561511087asdasd341",
"name": "b***",
"full_address": "湖asd***上7号",
"zip_code": "214400"
},
{
"phone_no": "15*******70",
"default": false,
"address": "江苏省苏州asdasdasd张家港经济技术开发区",
"province": "江苏",
"city": "苏州",
"mapping_id": "3561511asdasd505341",
"name": "a**",
"full_address": "新asd路***德***",
"zip_code": "215600"
}
],
"alipaywealth": {
"balance": 0,
"total_quotient": 0,
"huabei_creditamount": 500,
"mapping_id": "3561511asdsa63505341",
"huabei_totalcreditamount": 500,
"total_profit": 0
}
}
 
 
---
 
初步怀疑是不是不支持嵌套,数组啥的呀
 
然后我就翻了翻源码,发现了这个
 
我的错误就是在最后一个else里出现的
 
仔细一看,发现这个地方循环只要走了两次,或者前面的条件不成立就肯定会抛这个异常,这怎么看上去像是有点问题呢
 
    @SuppressWarnings("unchecked")
Object extractFromSource(Map<String, Object> map) {
Object value = map;
boolean first = true;
// each node is a key inside the map
for (String node : path) {
if (value == null) {
return null;
} else if (first || value instanceof Map) {
first = false;
value = ((Map<String, Object>) value).get(node);
} else {
throw new SqlIllegalArgumentException("Cannot extract value [{}] from source", fieldName);
}
}
return unwrapMultiValue(value);
}
继续阅读 »
我单机装了个6.3.0
执行的时候老出现如下错误,有老铁遇到过吗?
 
我是这么来启动的
./elasticsearch-sql-cli http://127.0.0.1:9200
sql> show tables;
name | type
----------------+---------------
hello |BASE TABLE

sql> select * from hello;
Server error [Server encountered an error [Cannot extract value [deliveraddress.address] from source]. [SqlIllegalArgumentException[Cannot extract value [deliveraddress.address] from source]
at org.elasticsearch.xpack.sql.execution.search.extractor.FieldHitExtractor.extractFromSource(FieldHitExtractor.java:139)
at org.elasticsearch.xpack.sql.execution.search.extractor.FieldHitExtractor.extract(FieldHitExtractor.java:95)
at org.elasticsearch.xpack.sql.execution.search.SearchHitRowSet.getColumn(SearchHitRowSet.java:114)
at org.elasticsearch.xpack.sql.session.AbstractRowSet.column(AbstractRowSet.java:18)
 
 
 
这是测试数据的mapping
{
"test2": {
"properties": {
"deliveraddress": {
"properties": {
"phone_no": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"default": {
"type": "boolean"
},
"address": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"province": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"city": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"mapping_id": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"name": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"full_address": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"zip_code": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
}
}
},
"alipaywealth": {
"properties": {
"balance": {
"type": "long"
},
"total_quotient": {
"type": "long"
},
"huabei_creditamount": {
"type": "long"
},
"mapping_id": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"huabei_totalcreditamount": {
"type": "long"
},
"total_profit": {
"type": "long"
}
}
},
"id": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
}
}
}
}

这是测试数据
{
"_id": "5b1cbc7935eb6e0007a154bb",
"deliveraddress": [
{
"phone_no": "13*******98",
"default": true,
"address": "江苏省无asdads市徐***镇",
"province": "江苏",
"city": "无锡",
"mapping_id": "3561511087asdasd341",
"name": "b***",
"full_address": "湖asd***上7号",
"zip_code": "214400"
},
{
"phone_no": "15*******70",
"default": false,
"address": "江苏省苏州asdasdasd张家港经济技术开发区",
"province": "江苏",
"city": "苏州",
"mapping_id": "3561511asdasd505341",
"name": "a**",
"full_address": "新asd路***德***",
"zip_code": "215600"
}
],
"alipaywealth": {
"balance": 0,
"total_quotient": 0,
"huabei_creditamount": 500,
"mapping_id": "3561511asdsa63505341",
"huabei_totalcreditamount": 500,
"total_profit": 0
}
}
 
 
---
 
初步怀疑是不是不支持嵌套,数组啥的呀
 
然后我就翻了翻源码,发现了这个
 
我的错误就是在最后一个else里出现的
 
仔细一看,发现这个地方循环只要走了两次,或者前面的条件不成立就肯定会抛这个异常,这怎么看上去像是有点问题呢
 
    @SuppressWarnings("unchecked")
Object extractFromSource(Map<String, Object> map) {
Object value = map;
boolean first = true;
// each node is a key inside the map
for (String node : path) {
if (value == null) {
return null;
} else if (first || value instanceof Map) {
first = false;
value = ((Map<String, Object>) value).get(node);
} else {
throw new SqlIllegalArgumentException("Cannot extract value [{}] from source", fieldName);
}
}
return unwrapMultiValue(value);
}
收起阅读 »