Elasticsearch使用的專有名詞,如index, documents等我不會特別翻成中文,我覺得反而更容易混淆
以下內文Elasticsearch簡稱為es
不管是不是類似於上述的任一種案例或用es解決新的問題,使用es的index、documents的方式都是一樣的
並非像是關聯式資料庫(RDBMS)儲存一列一列的資料,而是可以儲存複雜的資料結構(透過序列化成JSON
)
利用 inverted index(反向索引) 資料結構技術來達成快速的全文搜尋
每臺機器(實體或虛擬)可以運行多個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之後
es有個功能是可以不設定 schema/mappings(fields),即可直接輸入資料
即使在還未建立index時,直接輸入資料,也會自動建立index
es會自動偵測資料的類型,對應至es所規範的資料類型(fields),並把這些fields加進index
Mapping Dynamic設定共有三種選項:
這也是es其中一個特性,舉個例子
某個欄位如果後續是需要拿來做全文檢索的欄位,則會指定他的型別為text,
但又有些時候這個欄位是需要拿來後分類或排序,則會定義第二個型別為keyword
後續在介紹mappings時會更加深入的介紹
小小新手,如有理解錯誤或寫錯再請不吝提醒或糾正
What is Elasticsearch?
Inverted Index
Dynamic field mapping