安裝
- ElasticSearch -> 參考官方文檔,下載壓縮包解壓即可使用
- ElasticSearch head → 相當於一個可視化工具,用來查看數據 -> 可以直接安裝瀏覽器插件
- kibana (查詢工具) -> 參考官方文檔,下載壓縮包解壓即可使用
- ik 分詞器(中文分詞器) → GitHub 下載後直接下載放入 plugins 目錄 → 在config目錄下可以配置自己的詞典
核心概念
關係型數據庫 | ElasticSearch |
---|---|
數據庫 database | 索引 index |
表 table | 類型 type |
行 row | 文檔 document |
字段 columns | 字段 fields |
集羣
集羣(cluster) 是一個或多個節點的集合。
節點
節點(node) 是一個 elasticsearch 的運行實例,也就是一個進程,多個節點組成集羣,節點存儲數據,並參與集羣的索引、搜索和分析功能。
索引
索引(index) 是具有某種相似特性的文檔集合。(我感覺索引更像是 MySQL 中的表的概念)特別是7.0版本取消了類型的概念,如果把文檔看做一條數據,索引是擁有多個相同結構文檔的集合,也就是表。
文檔
文檔(document) 是可以被索引的基本信息單元。JSON文檔。
分片
分片是索引的水平拆分。當一個索引的數據量太大,可以把一個索引拆分成多個分片,每個分片本身都是具有完整功能的“獨立索引”,可以分佈在集羣中的任何節點上。每個分片都是一個完整的 Lucene 索引。
一般在創建索引的時候就要預判分片數量並創建,分片的數量理論上不可變更,唯一的辦法重建索引。
副本
每個分片都可以有一個或多個備份,分片的副本會部署在不同節點上,在分片或節點發生故障時提供高可用性。
副本也可以用於搜索,可以提高搜索性能和水平擴展吞吐量。類似於主從分離,一主多從。
分片和副本的區別和聯繫
- 本質上都是完整的 Lucenes 索引
- 假設一個索引定義了3個分片、2個副本,那麼總共就有9個分片,其中3個主分片,每個分片有2個副本。主分片就是建立索引時首先建立的分片,或者說當主分片失效時會重新選擇出一個副本作爲主分片
- 當索引(插入數據)時,數據會首先到達主分片,然後再把請求分發到其他副本
- 當搜索(查詢數據)時,主分片和副本都可以接受請求、搜索和分析數據,二者沒有區別
基礎操作
關於索引的基本操作
創建索引並添加一個數據(這種創建方式貌似已經過時,type將在7.x版本被廢棄)
PUT /索引名/~類型名~/文檔id
{請求體}
完成了自動增加索引!數據也成功的添加了,這就是我們在初期可以把es當做數據庫學習的原因!
創建索引,指定字段類型
PUT /索引名
{
"mappings": {
"properties": {
"字段名": {
"type": "字段類型"
},
"name": {
"type": "text"
},
"age": {
"type": "long"
},
"birthday": {
"type": "date"
}
}
}
}
查詢操作
通過get請求獲取索引具體的信息
創建時插入一條數據,不指定字段類型,es會自動給字段分配類型
_doc 是在type被廢棄後的默認type
擴展命令
通過 GET /_cat 可以獲得es很多信息
修改索引
有多種方式可選
刪除索引和文檔
關於文檔的基本操作
簡單命令
添加數據
查詢數據
複雜查詢
查詢出來的hits對象包含哪些東西
過濾結果,相當於 select name, desc .......
排序
分頁查詢
布爾查詢
must (相當於 and) 所有條件都要匹配
should (相當於 or) 部分條件匹配
must not (相當於 not)
過濾結果集和進行範圍查詢
gt 大於 gte 大於等於 lt 小於 lte 小於等於
匹配多個條件,匹配條件越多,分值越高
keyword 和 text, 精確匹配和模糊匹配,keyword 類型的字段不會被分詞器解析
term 精確查詢,不使用分詞器解析
match 使用分詞器解析
高亮顯示
自定義高亮標籤
<全文完>