1. 程式人生 > >ElasticSearch-5.6.8(二) 術語和認識RESTful

ElasticSearch-5.6.8(二) 術語和認識RESTful

前面我們已經搭建了一個單節點的ES接下來我們就在這個例項上測試。然後呢雖然es支援在命令列使用curl 的方式操作ES即下面這種
curl
但相對麻煩,所以我接下來我會使用kibana的 Dev Tools 來操作es
kibana介面

術語

  • 叢集

    叢集(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

    ),元資訊中必須記錄的有它的索引,型別,id,
    其他區還有_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