ElasticSearch 基本概念和基礎操作

安裝

  1. ElasticSearch -> 參考官方文檔,下載壓縮包解壓即可使用
  2. ElasticSearch head → 相當於一個可視化工具,用來查看數據 -> 可以直接安裝瀏覽器插件
  3. kibana (查詢工具) -> 參考官方文檔,下載壓縮包解壓即可使用
  4. ik 分詞器(中文分詞器) → GitHub 下載後直接下載放入 plugins 目錄 → 在config目錄下可以配置自己的詞典

核心概念

關係型數據庫 ElasticSearch
數據庫 database 索引 index
表 table 類型 type
行 row 文檔 document
字段 columns 字段 fields

集羣

集羣(cluster) 是一個或多個節點的集合。

節點

節點(node) 是一個 elasticsearch 的運行實例,也就是一個進程,多個節點組成集羣,節點存儲數據,並參與集羣的索引、搜索和分析功能。

索引

索引(index) 是具有某種相似特性的文檔集合。(我感覺索引更像是 MySQL 中的表的概念)特別是7.0版本取消了類型的概念,如果把文檔看做一條數據,索引是擁有多個相同結構文檔的集合,也就是表。

文檔

文檔(document) 是可以被索引的基本信息單元。JSON文檔。

分片

分片是索引的水平拆分。當一個索引的數據量太大,可以把一個索引拆分成多個分片,每個分片本身都是具有完整功能的“獨立索引”,可以分佈在集羣中的任何節點上。每個分片都是一個完整的 Lucene 索引。

一般在創建索引的時候就要預判分片數量並創建,分片的數量理論上不可變更,唯一的辦法重建索引。

副本

每個分片都可以有一個或多個備份,分片的副本會部署在不同節點上,在分片或節點發生故障時提供高可用性。

副本也可以用於搜索,可以提高搜索性能和水平擴展吞吐量。類似於主從分離,一主多從。

分片和副本的區別和聯繫

  1. 本質上都是完整的 Lucenes 索引
  2. 假設一個索引定義了3個分片、2個副本,那麼總共就有9個分片,其中3個主分片,每個分片有2個副本。主分片就是建立索引時首先建立的分片,或者說當主分片失效時會重新選擇出一個副本作爲主分片
  3. 當索引(插入數據)時,數據會首先到達主分片,然後再把請求分發到其他副本
  4. 當搜索(查詢數據)時,主分片和副本都可以接受請求、搜索和分析數據,二者沒有區別

基礎操作

關於索引的基本操作

創建索引並添加一個數據(這種創建方式貌似已經過時,type將在7.x版本被廢棄)

PUT /索引名/~類型名~/文檔id
{請求體}

/Users/chaohangz/Documents/MyNotebook/image/Untitled.png

完成了自動增加索引!數據也成功的添加了,這就是我們在初期可以把es當做數據庫學習的原因!

/Users/chaohangz/Documents/MyNotebook/image/Untitled1.png

創建索引,指定字段類型

PUT /索引名
{
  "mappings": {
    "properties": {
			"字段名": {
        "type": "字段類型"
      },
      "name": {
        "type": "text"
      },
      "age": {
        "type": "long"
      },
      "birthday": {
        "type": "date"
      }
    }
  }
}

/Users/chaohangz/Documents/MyNotebook/image/Untitled2.png

查詢操作

通過get請求獲取索引具體的信息

/Users/chaohangz/Documents/MyNotebook/image/Untitled3.png

創建時插入一條數據,不指定字段類型,es會自動給字段分配類型

_doc 是在type被廢棄後的默認type

/Users/chaohangz/Documents/MyNotebook/image/Untitled4.png

擴展命令

通過 GET /_cat 可以獲得es很多信息

/Users/chaohangz/Documents/MyNotebook/image/Untitled6.png

修改索引

有多種方式可選

/Users/chaohangz/Documents/MyNotebook/image/Untitled7.png

刪除索引和文檔

/Users/chaohangz/Documents/MyNotebook/image/Untitled8.png

關於文檔的基本操作

簡單命令

添加數據

/Users/chaohangz/Documents/MyNotebook/image/Untitled9.png

查詢數據

/Users/chaohangz/Documents/MyNotebook/image/Untitled10.png

/Users/chaohangz/Documents/MyNotebook/image/Untitled11.png

複雜查詢

查詢出來的hits對象包含哪些東西

過濾結果,相當於 select name, desc .......

Untitled

排序

Untitled

分頁查詢

布爾查詢

must (相當於 and) 所有條件都要匹配

image-20210503082409058

should (相當於 or) 部分條件匹配

image-20210503082942016

must not (相當於 not)

image-20210503083235155

過濾結果集和進行範圍查詢

gt 大於 gte 大於等於 lt 小於 lte 小於等於

image-20210503083619016

匹配多個條件,匹配條件越多,分值越高

image-20210503084341055

keyword 和 text, 精確匹配和模糊匹配,keyword 類型的字段不會被分詞器解析

image-20210503094122081

term 精確查詢,不使用分詞器解析

match 使用分詞器解析

image-20210503095116507

高亮顯示

image-20210503095634716

自定義高亮標籤

image-20210503100027466

<全文完>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章