1. 程式人生 > >史上最簡單的Elasticsearch教程-第四章:Elasticsearch與Mysql的區別,一看就懂

史上最簡單的Elasticsearch教程-第四章:Elasticsearch與Mysql的區別,一看就懂

Es與Mysql的區別,一看就懂!

 

(提前宣告:文章由作者:張耀烽/CSDN主頁:https://blog.csdn.net/youbitch1/

結合自己生產中的使用經驗整理,最終形成簡單易懂的文章,寫作不易,轉載請註明)

(整個教程的ES版本以及Kibana版本都是基於5.6.8)

(文章參考:Elasticsearch權威指南(書籍),Elasticsearch官方文件JavaApi5.6.8,實際專案中的應用場景)

(幫到到您請點點關注,文章持續更新中!)

(個人Git主頁:https://github.com/Mydreamandreality)\

 

OK.本來前一章瞭解了是如何給ES傳送restful請求,這章是要準備搞一個增刪改查的案例的

但是我覺得還是再詳細的解釋一遍ES和Mysql的區別,具體在哪裡,方便後面的學習

 

  1. Elasticsearch面向文件

    1. 什麼叫面向文件?

      1. 應用中的物件很少只是簡單的鍵值列表,更多時候它擁有複雜的資料結構,比如包含日期、 地理位置、另一個物件或者陣列。

        1. 比如:你的資料可能是這個樣子,或者更復雜

{

  "took": 0,

  "timed_out": false,

  "_shards": {

    "total": 5,

    "successful": 5,

    "skipped": 0,

    "failed": 0

  },

  "hits": {

    "total": 16137,

    "max_score": 1,

    "hits": [

      {

        "_index": "origin_flow_data_20190111",

        "_type": "logs",

        "_id": "AWg4fyND8G2qFi8QNpwr",

        "_score": 1,

        "_source": {

            ..........省略

        }

..........省略
  1. 如果上面的資料儲存到Mysql你需要怎麼做?兄弟萌思考一下

    1. 如果將這些資料儲存到由行和列組成的關係資料庫中

    2. 就好像是把一個豐富,資訊表現力強的物件拆散了放入一個非常大的表格中:

    3. 你不得 不拆散物件以適應表模式(通常一列表示一個欄位),然後又不得不在查詢的時候重建它們

    4. 你忍心這麼操作嗎???兄弟

 

 

  1. 在Elasticsearch中是怎麼處理的?兄弟睜開眼!

    1. Elasticsearch是面向文件(document oriented)的

    2. 這個意思就是它可以儲存整個物件或文件 (document),所以ES的Type(可以理解為Mysql的表)中的資料是這樣的

    3. 當然可以更復雜!

    4. 而且它不僅僅是儲存,還會索引(index)每個文件的內容使之可以被搜尋

    5. 在 Elasticsearch中,你可以對文件(而非成行成列的資料)進行索引、搜尋、排序、過濾。

    6. 這種理解資料的方式與以往完全不同,所以這也是Elasticsearch能夠執行復雜的全文搜尋的原因之一

 

 

  1. 之前簡單的總結過一次ES與Mysql的區別,這裡再次總結一次

  2. 在Elasticsearch中,文件歸屬於一種型別(type),而這些型別存在於索引(index)中,

Relational DB -> Databases -> Tables -> Rows -> Columns       //這個就是Mysql的結構,不多BB,都懂 

Elasticsearch -> Index     -> Types  -> Documents -> Fields      //這個就是ES的結構



#ES的index代表Mysql中的資料庫

#ES的types代表Mysql中的Tables

#ES的Document代表Mysql中的行   

#ES的Fields代表Mysql中的列   




Elasticsearch叢集可以包含多個索引index資料庫

每一個索引可以包含多個型別 types表,

每一個型別包含多個文件documents行

每個文件包含多個欄位 Fields列

 

解釋一下當時我學習時的誤區:摘自官方文件5.x版本

[索引]含義的區分 你可能已經注意到索引(index)這個詞在Elasticsearch中有著不同的含義,

所以有必要在 此做一下區分: 

索引(名詞) 如上文所述,一個索引(index)就像是傳統關係資料庫中的資料庫,

它 是相關文件儲存的地方,index的複數是indices 或indexes。

    

OK,ES與MYSQL的區別就先說到這裡,後續有什麼遺漏的地方我再補充----

下一章開始寫restful的增刪改查,

之後就是JavaApi如何使用!