使用 SQL 查询 Elasticsearch

taowen 发表了文章 • 3 个评论 • 2932 次浏览 • 2016-02-21 16:19 • 来自相关话题

我新写了一个用 SQL 查询 Elasticsearch 的工具 https://github.com/taowen/es-monitor,欢迎大家使用。详细的文档参见:https://segmentfault.com/a/1190000003502849
 
在此之前,有这么三个SQL查询Elasticsearch的工具:
Crate.iohttp://sqltoelasticsearch.fr/https://github.com/NLPchina/elasticsearch-sql
 
Crate.io 的问题是它不是Elasticsearch,它的聚合是自己实现的版本,和Elasticsearch的Aggregation是两套东西。
http://sqltoelasticsearch.fr/ 语法支持很不晚上,同时 WHERE 和 GROUP BY 就翻译错了。
https://github.com/NLPchina/elasticsearch-sql 的问题在于其用Java来翻译SQL太笨拙了,如果要达到同样的SQL语法支持程度还要增加大量的Java代码。
如果只是支持SQL,很多Elasticsearch的功能是无法被充分释放的。比如Elasticsearch支持sub aggregation,每个sub aggregation就是OLAP里的下钻一次的概念。而且每下钻一次都可以有自己的指标计算。简单的SQL是无法表达这样的特性的。所以我扩充了一下SQL的语义,使得其更贴近Elasticsearch聚合的工作方式:
 $(document).ready(function() {$('pre code').each(function(i, block) { hljs.highlightBlock( block); }); });$ cat << EOF | ./es_query.py http://127.0.0.1:9200
WITH SELECT MAX(market_cap) AS max_all_times FROM symbol AS all_symbols;
WITH SELECT MAX(market_cap) AS max_at_2000 FROM all_symbols WHERE ipo_year=2000 AS year_2000;
WITH SELECT MAX(market_cap) AS max_at_2001 FROM all_symbols WHERE ipo_year=2001 AS year_2001;
EOF希望我的小工具可以帮到你
  查看全部
我新写了一个用 SQL 查询 Elasticsearch 的工具 https://github.com/taowen/es-monitor,欢迎大家使用。详细的文档参见:https://segmentfault.com/a/1190000003502849
 
在此之前,有这么三个SQL查询Elasticsearch的工具:

 
Crate.io 的问题是它不是Elasticsearch,它的聚合是自己实现的版本,和Elasticsearch的Aggregation是两套东西。
http://sqltoelasticsearch.fr/ 语法支持很不晚上,同时 WHERE 和 GROUP BY 就翻译错了。
https://github.com/NLPchina/elasticsearch-sql 的问题在于其用Java来翻译SQL太笨拙了,如果要达到同样的SQL语法支持程度还要增加大量的Java代码。
如果只是支持SQL,很多Elasticsearch的功能是无法被充分释放的。比如Elasticsearch支持sub aggregation,每个sub aggregation就是OLAP里的下钻一次的概念。而且每下钻一次都可以有自己的指标计算。简单的SQL是无法表达这样的特性的。所以我扩充了一下SQL的语义,使得其更贴近Elasticsearch聚合的工作方式:
 
$ cat << EOF | ./es_query.py http://127.0.0.1:9200 
WITH SELECT MAX(market_cap) AS max_all_times FROM symbol AS all_symbols;
WITH SELECT MAX(market_cap) AS max_at_2000 FROM all_symbols WHERE ipo_year=2000 AS year_2000;
WITH SELECT MAX(market_cap) AS max_at_2001 FROM all_symbols WHERE ipo_year=2001 AS year_2001;
EOF
希望我的小工具可以帮到你
 

elasticsearch是否合适作为nosql使用?

helloes 回复了问题 • 2 人关注 • 1 个回复 • 597 次浏览 • 2016-02-20 17:46 • 来自相关话题

关于ES备份问题

回复

vaceliu 发起了问题 • 2 人关注 • 0 个回复 • 536 次浏览 • 2016-02-18 11:39 • 来自相关话题

ES集群运行一段时间就会不断的full gc

zhangrui90 回复了问题 • 5 人关注 • 5 个回复 • 999 次浏览 • 2016-02-18 09:53 • 来自相关话题

es根据\n进行分词如何配置

回复

win1027 回复了问题 • 1 人关注 • 1 个回复 • 907 次浏览 • 2016-02-16 21:14 • 来自相关话题

elasticsearch 索引是全部存在内存中吗?

zttech 回复了问题 • 2 人关注 • 1 个回复 • 1462 次浏览 • 2016-02-15 13:12 • 来自相关话题

elastic shard rebalance

suwensen 回复了问题 • 2 人关注 • 2 个回复 • 735 次浏览 • 2016-02-13 18:04 • 来自相关话题

插件安装成功 但是http://localhost:9200/_plugin/head 访问是空白是什么原因?

wenjoe 回复了问题 • 3 人关注 • 2 个回复 • 1170 次浏览 • 2016-02-07 08:46 • 来自相关话题

elastic的分词

回复

suwensen 发起了问题 • 1 人关注 • 0 个回复 • 860 次浏览 • 2016-02-03 16:13 • 来自相关话题

ES聚合时能否同时获取多个字段

回复

verra1448 发起了问题 • 1 人关注 • 0 个回复 • 902 次浏览 • 2016-02-02 16:15 • 来自相关话题