cluster
整個elasticsearch 預設就是集群狀態,整個集群是乙份完整、互備的資料。
node
集群中的乙個節點,一般只乙個程序就是乙個node
shard
分片,即使是乙個節點中的資料也會通過hash演算法,分成多個片存放,預設是5片。
index
相當於rdbms的database, 對於使用者來說是乙個邏輯資料庫,雖然物理上會被分多個shard存放,也可能存放在多個node中。
type
類似於rdbms的table,但是與其說像table,其實更像物件導向中的class , 同一json的格式的資料集合。
document
類似於rdbms的 row、物件導向裡的object
field
相當於字段、屬性
1.利用kibana學習 elasticsearch restful api (dsl)
public class movie
public class actor
這兩個物件如果放在關係型資料庫儲存,會被拆成2張表,但是elasticsearch是用乙個json來表示乙個document。
所以他儲存到es中應該是:
,,]
}
2.對資料的操作
1)get /_cat/indices?v #v的意思為橫向顯示,會將json轉換成橫向表的形式顯示,方便檢視
es 中會預設存在乙個名為.kibana的索引
表頭的含義
health
green(集群完整) yellow(單點正常、集群不完整) red(單點不正常)
status
是否能使用
index
索引名uuid
索引統一編號
pri主節點幾個
rep從節點幾個
docs.count
文件數docs.deleted
文件被刪了多少
store.size
整體佔空間大小
pri.store.size
主節點佔
2) put /movie_index
增加乙個索引
3)delete /movie_index
刪除乙個索引,但elasticsearch的刪除並不是真正的清除資料,而是基於版本號機制(類似於github),進行軟刪除。
4)新增乙個document
put /movie_index/movie/1,,
]}put /movie_index/movie/2]}
put /movie_index/movie/3
]}
如果之前沒建過index或者type,es 會自動建立。
5)get movie_index/movie/1
直接通過id查詢記錄
6)修改---整體替換
put /movie_index/movie/3
]}
和新增沒什麼區別,不是在原來的基礎上進行修改,而是覆蓋資料。
7)修改某乙個字段
post movie_index/movie/3/_update
}
8)刪除乙個document
delete movie_index/movie/3
9)搜尋type全部資料
get movie_index/movie/_search
得到的結果
,
"hits": ]}
。。。。。。。。
。。。。。。。。
}
10)按條件查詢(全部)
get movie_index/movie/_search
}}
11)按分詞查詢
get movie_index/movie/_search
}}
注意結果的評分
12)按分詞子屬性查詢
get movie_index/movie/_search
}}
13)按短語查詢,不再利用分詞技術,直接用短語在原始資料中匹配
get movie_index/movie/_search
}}
14)fuzzy查詢
get movie_index/movie/_search
}}
校正匹配分詞,當乙個單詞都無法準確匹配,es通過一種演算法對非常接近的單詞也給與一定的評分,能夠查詢出來,但是消耗更多的效能。
15)過濾--查詢前過濾(推薦)
gt大於
lt小於
gte大於等於
lte小於等於
get movie_index/movie/_search}}
}}
}
16)排序
get movie_index/movie/_search
} , "sort": [
}]}
17)分頁查詢
get movie_index/movie/_search
}, "from": 1,
"size": 1
}
這裡類似於mysql的分頁
18)指定查詢的字段
get movie_index/movie/_search
}, "_source": ["name", "doubanscore"]
}
19)高亮
get movie_index/movie/_search
},"highlight": }
}}自定義標籤
get movie_index/movie/_search
},"highlight": }
}}
20)聚合
取出每個演員共參演了多少部電影
get movie_index/movie/_search
} }}
每個演員參演電影的平均分是多少,並按評分排序
get movie_index/movie/_search
},"aggs": }}
} }}
之前說type可以理解為table,那每個欄位的資料型別是如何定義的呢
true/false → boolean
1020 → long
20.1 → double
「2018-02-01」 → date
「hello world」 → text +keyword
預設只有text會進行分詞,keyword是不會分詞的字串。
Elasticsearch核心概念
elasticsearch使用lucene作為其底層的搜尋引擎,關於lucene的介紹,可以參考官方 lucene關鍵概念 lucene使用inverted index來儲存term在document中位置的對映關係。譬如如下文件 使用inverted index儲存,乙個簡單地對映關係 term ...
ElasticSearch基礎概念
es的index索引,document文件物件,副本,多節點集群等基礎知識 1 通俗的解釋 在elasticsearch中,文件歸屬於一種型別 type 而這些型別存在於索引 index 中,索引名稱必須是小寫 relational db database table row column elas...
Elasticsearch核心概念
一 cluster 1 代表乙個集群,有乙個主節點,通過選舉產生。對外部來說es去中心化,邏輯上是乙個整體。2 主節點負責管理集群狀態,包括管理分片狀態和副本狀態,以及節點的發現和刪除 3 主節點不負責對資料的增刪改查請求處理,只負責維護集群相關狀態 二 shards 分片 1 索引分片,es可以把...