iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
2
Elastic Stack on Cloud

Elastic Stack武學練功坊系列 第 2

Elastic Stack第二重

  • 分享至 

  • xImage
  •  

Elasticsearch介紹

Elasticsearch使用的專有名詞,如index, documents等我不會特別翻成中文,我覺得反而更容易混淆
以下內文Elasticsearch簡稱為es


使用案例 (Use Cases)

  • 網站或app的搜尋功能 (搜尋框)
  • 儲存分析logs、指標或是資安事件資料
  • 當作儲存引擎來記錄商業工作流程
  • 管理、整合、分析空間資訊,實作成 GIS (geographic information system)

不管是不是類似於上述的任一種案例或用es解決新的問題,使用es的index、documents的方式都是一樣的


Elasticsearch的資料 (Data in Elasticsearch)

資料結構

並非像是關聯式資料庫(RDBMS)儲存一列一列的資料,而是可以儲存複雜的資料結構(透過序列化成JSON)
利用 inverted index(反向索引) 資料結構技術來達成快速的全文搜尋

documents and indices

每臺機器(實體或虛擬)可以運行多個es instance(實例),
一個es instance可視為一個node(節點),
一組node可構成一個cluster(集群),
一個es instance可以有多個index
一個index可以想成由一群documents所組成
一個document有很多fields(key-value pairs)

簡而言之,
fields->document->index->node(es instance)->cluster

有一種比擬方式可能比較容易理解一點,但是要注意使用上的特性還是有所不同,

項目 | ES | RDBMS
------------- | -------------
一個欄位 | field | column
一筆資料 | document(JSON) | row
結構(欄位/型別) | mappings | schema
包含資料和結構 | index | table

Note: 上述介紹的是es版本7之後

Dynamic Mapping

es有個功能是可以不設定 schema/mappings(fields),即可直接輸入資料
即使在還未建立index時,直接輸入資料,也會自動建立index
es會自動偵測資料的類型,對應至es所規範的資料類型(fields),並把這些fields加進index
Mapping Dynamic設定共有三種選項:

  • true (default): 即為上述的特性,會自動加入新的fields
  • false: 忽略新的fields
  • strict: 如果有未定義的fields,則會丟出例外(throw an exception)

一個field,多個data types

這也是es其中一個特性,舉個例子
某個欄位如果後續是需要拿來做全文檢索的欄位,則會指定他的型別為text
但又有些時候這個欄位是需要拿來後分類或排序,則會定義第二個型別為keyword
後續在介紹mappings時會更加深入的介紹


小小新手,如有理解錯誤或寫錯再請不吝提醒或糾正


Reference

What is Elasticsearch?
Inverted Index
Dynamic field mapping


上一篇
Elastic Stack第一重
下一篇
Elastic Stack第三重
系列文
Elastic Stack武學練功坊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言