ElasticSearch 概念理解與基本實操

2021-10-02 22:09:55 字數 3565 閱讀 7391

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可以把...