elasticsearch 的sql插件使用
对于这些复杂的查询,es使用javaAPI都可以实现,但是相较于sql语句来说,我们更加熟悉sql语句,所以es也提供了sql语句的开发,让我们通过sql语句即可实现ES的查询,接下来我们就来安装并学习sql的插件的使用方法吧!在es版本6.3之前都不支持sql语句的开发,如果需要使用sql语句来开发es的数据查询,那么我们需要手动的自己安装插件,插件下载地址如下,地址:https://githu
对于这些复杂的查询,es使用javaAPI都可以实现,但是相较于sql语句来说,我们更加熟悉sql语句,所以es也提供了sql语句的开发,让我们通过sql语句即可实现ES的查询,接下来我们就来安装并学习sql的插件的使用方法吧!
在es版本6.3之前都不支持sql语句的开发,如果需要使用sql语句来开发es的数据查询,那么我们需要手动的自己安装插件,插件下载地址如下,
地址:
https://github.com/NLPchina/elasticsearch-sql/
但是在6.3版本之后,es自带就安装了sql的插件,我们可以直接通过sql语句的方式实现es当中的数据查询
对于sql语句的使用,es给我们提供了三种方式,接下来我们分别看看三种方式如何实现es数据的查询
第一种方式:通过rest风格实现数据的查询
第一步:使用rest方式向索引库当中添加数据
使用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}
第二步:使用rest风格方式查询数据
curl -X POST "node01:9200/_xpack/sql?format=txt" -H 'Content-Type: application/json' -d'
{
"query": "SELECT * FROM library WHERE release_date < \u00272000-01-01\u0027"
}'
第二种方式:使用sql脚本的方式进入sql客户端进行查询
我们也可以使用sql脚本的方式,进入sql客户端,通过sql语句的方式实现数据的查询
第一步:node01进入sql脚本客户端
node01执行以下命令进入sql脚本客户端
cd /export/servers/es/elasticsearch-6.7.0
bin/elasticsearch-sql-cli node01:9200
第二步:执行sql语句
sql> select * from library;
author | name | page_count | release_date
----------------+---------------+---------------+------------------------
Dan Simmons |Hyperion |482 |1989-05-26T00:00:00.000Z
James S.A. Corey|Leviathan Wakes|561 |2011-06-02T00:00:00.000Z
Frank Herbert |Dune |604 |1965-06-01T00:00:00.000Z
第三种方式:通过jdbc连接的方式
当然了,我们也可以通过jdbc连接的方式,通过java代码来实现ES当中数据的查询操作
官网介绍操作连接
https://www.elastic.co/guide/en/elasticsearch/reference/6.7/sql-jdbc.html
使用javaAPI访问数据库当中的数据,会产生一个错误,参见这篇文章
https://www.cnblogs.com/hts-technology/p/9282421.html
第一步:导入jar包
<repositories>
<repository>
<id>elastic.co</id>
<url>https://artifacts.elastic.co/maven</url>
</repository>
</repositories>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>x-pack-sql-jdbc</artifactId>
<version>6.7.0</version>
</dependency>
第二步:开发java代码,实现查询
通过java代码,使用jdbc连接es服务器,然后查询数据
@Test
public void esJdbc() throws SQLException {
EsDataSource dataSource = new EsDataSource();
String address = "jdbc:es://http://node01:9200" ;
dataSource.setUrl(address);
Properties connectionProperties = new Properties();
dataSource.setProperties(connectionProperties);
Connection connection = dataSource.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from library");
while(resultSet.next()){
String string = resultSet.getString(0);
String string1 = resultSet.getString(1);
int anInt = resultSet.getInt(2);
String string2 = resultSet.getString(4);
System.out.println(string + "\t" + string1 + "\t" + anInt + "\t" + string2);
}
connection.close();
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)