支援SQL Elasticsearch6.3 新特性概覽
阿新 • • 發佈:2018-12-30
1、Elasticsearch6.3 特性概覽
1.1、支援Sql
像操作Mysql一樣使用Elasticsearch,縮減DSL的學習成本,更多人愛上ES的特性。這樣我們就可以減少 DSL 的學習成本,這個 SQL 模組是屬於 X-Pack 的一部分。
POST /_xpack/sql?format=txt
{
"query": "SELECT * FROM library WHERE release_date < '2000-01-01' "
}
1.2、新增彙總統計功能
Elastic Stack已被越來越多地於物聯網,用於:效能監控和其他指標資料的資料儲存和視覺化。儘管我們仍然認為大部分資料在很長一段時間內都有價值,但資料的相對價值隨著時間的增長而降低。
隨著6.3的釋出,我們現在可以在Elasticsearch中建立一個Job,它將定期彙總最近新增的資料的彙總統計資訊,該資訊通過檢索可以獲得。
1.3、支援Java10
Java9、Java10都是短期版本。
官方建議:除非你熟悉Java短期版本的快速釋出週期,否則我們強烈建議大多數使用者堅持使用Java 8。
1.4、安全更新
此更新還修復了兩個安全問題。
2、Elasticsearch版本如何升級到6.3?
作為基本規則:
2.1 次要版本之間的遷移
例如 6.x到6.y - 可以通過一次升級一個節點來執行。
2.2 連續主要版本之間的遷移
例如 5.x至6.x - 需要完全重啟群集。
2.3 非連續主要版本之間的遷移
例如 2.x至6.x - 不支援。
3、Elasticsearch6.3 版本搶先安裝
iteblog$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.zip iteblog$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.zip.sha512 iteblog$ shasum -a 512 -c elasticsearch-6.3.0.zip.sha512 iteblog$ unzip elasticsearch-6.3.0.zip iteblog$ cd elasticsearch-6.3.0/ iteblog$ ./bin/elasticsearch
4、Elasticsearch-sql搶先使用
- Elasticsearch SQL是一個X-Pack元件,它允許針對Elasticsearch實時執行類似SQL的查詢。
- 無論是使用REST介面,命令列還是JDBC,任何客戶端都可以使用SQL在Elasticsearch中本地搜尋和聚合資料。
- 人們可以將Elasticsearch SQL視為翻譯工具,簡化DSL的複雜使用,方便實時大規模地讀取和處理資料。
4.1 sql檢索上道
Sql檢索體驗如下:
4.2 sql-cli客戶端檢索
.
/bin/elasticsearch-sql-cli
www.iteblog.com:9200
4.3 sql RESTful API使用
POST /_xpack/sql?format=txt
{
"query": "SELECT * FROM library ORDER BY page_count DESC LIMIT 5"
}
返回結果:
author | name | page_count | release_date
----------------+---------------+---------------+------------------------
Frank Herbert |Dune |604 |1965-06-01T00:00:00.000Z
James S.A. Corey|Leviathan Wakes|561 |2011-06-02T00:00:00.000Z
Dan Simmons |Hyperion |482 |1989-05-26T00:00:00.000
4.4 sql轉DSL
POST /_xpack/sql/translate
{
"query": "SELECT * FROM library ORDER BY page_count DESC",
"fetch_size": 10
}
返回結果
{
"size": 10,
"_source": {
"includes": [
"author",
"name"
],
"excludes": []
},
"docvalue_fields": [
"page_count",
"release_date"
],
"sort": [
{
"page_count": {
"order": "desc"
}
}
]
}
4.5 開發中使用JDBC連線Elasticsearch
String address =
"jdbc:es://"
+ elasticsearchAddress;
Properties connectionProperties = connectionProperties();
Connection connection = DriverManager.getConnection(address, connectionProperties);
try
(Statement statement = connection.createStatement();
ResultSet results = statement.executeQuery(
"SELECT name, page_count FROM library ORDER BY page_count DESC LIMIT 1"
)) {
assertTrue(results.next());
assertEquals(
"Don Quixote"
, results.getString(
1
));
assertEquals(
1072
, results.getInt(
2
));
SQLException e = expectThrows(SQLException.
class
, () -> results.getInt(
1
));
assertTrue(e.getMessage(), e.getMessage().contains(
"unable to convert column 1 to an int"
));
assertFalse(results.next());
}
轉載自 https://www.iteblog.com/archives/2378.html#i