Elasticsearch SQL
Elasticsearch SQL是由X-Pack组件提供的它允许针对Elasticsearch实时执行类似SQL的查询
可以在JDBC、REST接口、命令行或者其他客户端使用SQL语法进行查询以及聚合
我们可以将Elasticsearch SQL看作是一个转换器,它既理解SQL也理解Elasticsearch,并且通过利用Elasticsearch功能,使实时读取和处理数据变得容易。
Elasticsearch SQL的好处:
- 原生整合
- 无需外部组件
- 轻量级和高效
体验
- kibana
依次在kibana上执行下面两条语句
- kibana
PUT /library/book/_bulk?refresh
{"index":{"_id": "Leviathan Wakes"}}
{"name": "Leviathan Wakes", "author": "James S.A. Corey", "release_date": "2011-06-02", "page_count": 561}
{"index":{"_id": "Hyperion"}}
{"name": "Hyperion", "author": "Dan Simmons", "release_date": "1989-05-26", "page_count": 482}
{"index":{"_id": "Dune"}}
{"name": "Dune", "author": "Frank Herbert", "release_date": "1965-06-01", "page_count": 604}
POST /_xpack/sql?format=txt
{
"query": "SELECT * FROM library WHERE release_date < '2000-01-01'"
}
查询结果
- 2.命令行
从elasticsearch/bin目录下 可以看到有sql-cli
工具
在elasticsearch/bin
目录下调用./elasticsearch-sql-cli
进入命令行
默认情况下elasticsearch-sql-cli会尝试连接localhost:9200, 如果你修改了ES的端口,需要指定新的ES访问地址,比如 你的ES端口设置成 8888
, 那么需要输入下列命令来打开
./elasticsearch-sql-cli http://localhost:8888
进入 es-sql 命令行以后,类似的,用SQL语句查询
- ES并没有使用新的数据结构以支持SQL,只是将SQL语句映射到原有的结构中进行查询,因为依赖于ES的数据结构所衍生的各种概念 都有跟 column, row, database, table, datatype 等数据库概念一一对应的
- ES的SQL模块尽可能地满足principle of least surprise , 即通过ES-SQL查询的结果会尽可能地符合用户对该SQL的理解所产生的预期结果
- SQL模块需要ES6.3+版本
更多资料可以查看官方文档
网友评论