1. 程式人生 > >Atitit Elasticsearch6之elasticsearch5.x 新特性 目錄 1.1. 其實,elasticsearch5.x 和 elasticsearch2.x 並不區別很大。 1

Atitit Elasticsearch6之elasticsearch5.x 新特性 目錄 1.1. 其實,elasticsearch5.x 和 elasticsearch2.x 並不區別很大。 1

Atitit Elasticsearch6之elasticsearch5.x 新特性

 

目錄

1.1. 其實,elasticsearch5.x 和 elasticsearch2.x 並不區別很大。 1

2. Elasticsearch5.0新增功能 1

2.2. Other attilax not impt new feature 2

3. Es6.3 2

4. Elasticsearch6.3 特性概覽 2

4.1. 1.1、支援Sql 2

4.2. 、Elasticsearch-sql搶先使用 3

4.3. sql RESTful API使用 3

4.4. 4.4 sql轉DSL 4

4.5. 4.5 開發中使用JDBC連線Elasticsearch 6

5. ref 6

 

    1. 其實,elasticsearch5.x 和 elasticsearch2.x 並不區別很大。

  是因為,ELK裡之前版本各種很混亂,直接升級到5.0了。

  其實,elasticsearch5.x 按理來說是elasticsearch3.x,只是為了跟隨ELK整體版本的統一

 

 

  1. Elasticsearch5.0新增功能

  首先來看看 5.0 裡面都引入了哪些新的功能吧。

        1. 1、首先看看跟效能有關的
        2. 1.1 第一個就是Lucene 6.x 的支援。

Elasticsearch5.0率先集成了Lucene6版本,其中最重要的特性就是 Dimensional Point Fields,多維浮點欄位,ES裡面相關的欄位如date, numeric,ip 和 Geospatial 都將大大提升效能

2、我們再看看es在查詢優化這塊做的工作

        1. 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就可以了,一個查詢執行過程中的每個元件的效能消耗都能收集到。

    1. Other attilax not impt new feature

 

  1. Es6.3
  2. Elasticsearch6.3 特性概覽
    1. 1.1、支援Sql

像操作Mysql一樣使用Elasticsearch,縮減DSL的學習成本,更多人愛上ES的特性。這樣我們就可以減少 DSL 的學習成本,這個 SQL 模組是屬於 X-Pack 的一部分。

  1.  

POST /_xpack/sql?format=txt

  1.  
  2.  

{

  1.  
  2.  

    "query": "SELECT * FROM library WHERE release_date < '2000-01-01' "

  1.  
  2.  

 

  1.  

 

    1. 、Elasticsearch-sql搶先使用
  • Elasticsearch SQL是一個X-Pack元件,它允許針對Elasticsearch實時執行類似SQL的查詢。
  • 無論是使用REST介面,命令列還是JDBC,任何客戶端都可以使用SQL在Elasticsearch中本地搜尋和聚合資料。
  • 人們可以將Elasticsearch SQL視為翻譯工具,簡化DSL的複雜使用,方便實時大規模地讀取和處理資料。
    1. sql RESTful API使用
  1.  

POST /_xpack/sql?format=txt

  1.  
  2.  

{

  1.  
  2.  

    "query": "SELECT * FROM library ORDER BY page_count DESC LIMIT 5"

  1.  
  2.  

}

  1.  

返回結果:

  1.  

     author     |     name      |  page_count   |      release_date      

  1.  
  2.  

----------------+---------------+---------------+------------------------

  1.  
  2.  

Frank Herbert   |Dune           |604            |1965-06-01T00:00:00.000Z

  1.  
  2.  

James S.A. Corey|Leviathan Wakes|561            |2011-06-02T00:00:00.000Z

  1.  
  2.  

Dan Simmons     |Hyperion       |482            |1989-05-26T00:00:00.000

    1. 4.4 sql轉DSL
  1.  

POST /_xpack/sql/translate

  1.  
  2.  

{

  1.  
  2.  

    "query": "SELECT * FROM library ORDER BY page_count DESC",

  1.  
  2.  

    "fetch_size": 10

  1.  
  2.  

}

  1.  

返回結果

  1.  

{

  1.  
  2.  

  "size": 10,

  1.  
  2.  

  "_source": {

  1.  
  2.  

    "includes": [

  1.  
  2.  

      "author",

  1.  
  2.  

      "name"

  1.  
  2.  

    ],

  1.  
  2.  

    "excludes": []

  1.  
  2.  

  },

  1.  
  2.  

  "docvalue_fields": [

  1.  
  2.  

    "page_count",

  1.  
  2.  

    "release_date"

  1.  
  2.  

  ],

  1.  
  2.  

  "sort": [

  1.  
  2.  

    {

  1.  
  2.  

      "page_count": {

  1.  
  2.  

        "order": "desc"

  1.  
  2.  

      }

  1.  
  2.  

    }

  1.  
  2.  

  ]

  1.  
  2.  

 

    1. 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());

}

 

  1. ref

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