ElasticSearch-5.6.8(二) 術語和認識RESTful
前面我們已經搭建了一個單節點的ES接下來我們就在這個例項上測試。然後呢雖然es支援在命令列使用curl 的方式操作ES即下面這種
但相對麻煩,所以我接下來我會使用kibana的 Dev Tools 來操作es
術語
叢集
叢集(cluster)即是由多個或一個elasticsearch例項組成的整體。可以通過
GET /_cluster/health
命令檢視叢集狀態
還可用GET /_cluster/state
此命令會列出叢集下大多數資訊,報錯叢集下的節點資訊,叢集元資訊,還能看到所有的索引和它們的資訊。雖然很強大但資訊太多了反倒感覺沒啥用了。節點
節點(node)節點就是一個es例項。可以通過
GET /_nodes/state
GET /_nodes/節點id
檢視某一個節點的資訊分片
分片(hards)es的最小工作單位,一個分片其實就是一個索引的所有資料的一部分。分片分為主分片(primary shard)和複製分片(replica shard),主分片的作用是把一個索引分成幾份來儲存,裡面存著一份份完整的文件,而複製分片是主分片的備份。可以在新建時設定它們的數量
PUT /my #索引名稱
{
"settings": {
"number_of_shards": 3, #主分片數
"number_of_replicas": 1 #複製分片數
}
}
主分片數在新建好以後就不能修改了,除非你刪掉重建,但複製分片數量是允許修改的。還記得前面說的單節點的叢集因為預設複製分片為1 導致叢集狀態為yellow的問題麼。我們可以通過把索引的複製分片數修改成0來讓叢集的status變成green。命令為
PUT /my/_settings
{
"number_of_replicas": 0
}
索引
索引(index)這個詞在不同的語境有多種含義,一種是名詞形式的指一個索引相當於資料庫,一種是動詞形式的,比如索引一個文件,表示insert操作,還有一種索引指的是倒排索引,相當於關係型資料庫中的給欄位建立一個索引,用於快速查詢。
前面說了分片是es中最小的工作單元,索引索引的資料其實是存在一個個分片上的,它相當於是一個邏輯名稱空間型別
型別(type)它相當於資料庫中的表,可以對其裡面的欄位設定型別。
文件
文件就是我們儲存在es上的資料,一個文件就相當於資料庫中的一行。文件除了我們儲存的資料外它還包括它的元資料(metadata
其他區還有_source,_all對映
對映(mapping)相當於資料庫的表結構,它能夠作用於type,指定欄位的型別,指定索引方式,指定分詞器。
-
ES操作
操作es主要分為兩種方式 JAVA API(當然還有其他多種客戶端)和RESTful API。
我們先來看下後面一種方式,restful是一種基於http協議,以json資料格式互動的操作方式。它的訪問格式為
curl -X<VERB> <PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING> -d <BODY>
- VERB HTTP方法: GET , POST , PUT , HEAD , DELETE
- PROTOCOL http或者https協議(只有在Elasticsearch前面有https代理的時候可用)
- HOST Elasticsearch叢集中的任何一個節點的主機名,如果是在本地的節點,那麼就叫 localhost
- PORT Elasticsearch HTTP服務所在的埠,預設為9200
- PATH API路徑(例如_count將返回叢集中文件的數量),PATH可以包含多個元件,例如
_cluster/stats或者_nodes/stats/jvm - QUERY_STRING 一些可選的查詢請求引數,例如 ?pretty 引數將使請求返回更加美觀 易讀的JSON資料
- BODY 一個JSON格式的請求主體(如果請求需要的話)
#統計急群內的文件總數可以這樣寫
curl -XGET 'http://localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}
因為我是在kibana上進行操作的所以我的訪問方式為 GET /_cluster/health
<VERB> /<PATH>?<QUERY_STRING> -d <BODY>
一些有用的檢視命令,有待增加
- 檢視叢集健康狀態 GET /_cluster/health
能看到叢集名字和叢集狀態
- 檢視叢集資訊 GET /_cluster/state
能看到叢集下所有節點資訊,所有索引的資訊
- 檢視節點狀態GET /_nodes/stats/
它會列出所有節點的資訊包括節點上搜索次數,如果想看某一節點的資訊使用GET /_nodes/節點id
- 檢視索引的設定GET /索引名/_settings
- 檢視索引的對映GET /索引名/_mapping
- 檢視索引下文件數GET 索引名/_count
- 檢視叢集下所有的索引 GET /_cat/indices?v