Atitit Elasticsearch6之elasticsearch5.x 新特性 目錄 1.1. 其實,elasticsearch5.x 和 elasticsearch2.x 並不區別很大。 1
Atitit Elasticsearch6之elasticsearch5.x 新特性
目錄
1.1. 其實,elasticsearch5.x 和 elasticsearch2.x 並不區別很大。 1
2.2. Other attilax not impt new feature 2
4.5. 4.5 開發中使用JDBC連線Elasticsearch 6
是因為,ELK裡之前版本各種很混亂,直接升級到5.0了。
其實,elasticsearch5.x 按理來說是elasticsearch3.x,只是為了跟隨ELK整體版本的統一
首先來看看 5.0 裡面都引入了哪些新的功能吧。
-
-
-
- 1、首先看看跟效能有關的
- 1.1 第一個就是Lucene 6.x 的支援。
-
-
Elasticsearch5.0率先集成了Lucene6版本,其中最重要的特性就是 Dimensional Point Fields,多維浮點欄位,ES裡面相關的欄位如date, numeric,ip 和 Geospatial 都將大大提升效能
2、我們再看看es在查詢優化這塊做的工作
-
-
-
- 2.1 新增了一個Profile API。
- 2.1 新增了一個Profile API。
-
-
#https://www.elastic.co/guide/en/elasticsearch/reference/master/search-profile.html#_usage_3
都說要致富先修路,要調優當然需要先監控啦,elasticsearch在很多層面都提供了stats方便你來監控調優,但是還不夠,其實很多情況下查詢速度慢很大一部分原因是糟糕的查詢引起的,玩過SQL的人都知道,資料庫服務的執行計劃(execution plan)非常有用,可以看到那些查詢走沒走索引和執行時間,用來調優,elasticsearch現在提供了Profile API來進行查詢的優化,只需要在查詢的時候開啟profile:true就可以了,一個查詢執行過程中的每個元件的效能消耗都能收集到。
像操作Mysql一樣使用Elasticsearch,縮減DSL的學習成本,更多人愛上ES的特性。這樣我們就可以減少 DSL 的學習成本,這個 SQL 模組是屬於 X-Pack 的一部分。
POST /_xpack/sql?format=txt
{
"query": "SELECT * FROM library WHERE release_date < '2000-01-01' "
- Elasticsearch SQL是一個X-Pack元件,它允許針對Elasticsearch實時執行類似SQL的查詢。
- 無論是使用REST介面,命令列還是JDBC,任何客戶端都可以使用SQL在Elasticsearch中本地搜尋和聚合資料。
- 人們可以將Elasticsearch SQL視為翻譯工具,簡化DSL的複雜使用,方便實時大規模地讀取和處理資料。
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
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"
}
}
]
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());
}
Elasticsearch之elasticsearch5.x 新特性 - 大資料和AI躺過的坑 - 部落格園.html
Elasticsearch 6 新特性與重要變更解讀 - 1.01^365=37.78 (Lucene、ES、ELK開發交流群_ 370734940) - CSDN部落格.html
支援SQL Elasticsearch6.3 新特性概覽 - qq_18769269的部落格 - CSDN部落格.html