#<center> Elasticsearch(5)--- 基本命令</center>html
說明
:該博客對於的Elasticsearch 的版本爲7.3。node
這篇博客的命令分爲ES集羣相關命令
,索引CRUD命令
,文檔CRUD命令
。這裏不包括Query查詢命令,它單獨寫一篇博客。mysql
<font color=#FFD700> 1、ES集羣相關命令</font>
ES集羣相關命令主要是_cat
命令,因此這裏詳細講解下該命令。sql
一、_cat命令
_cat
系列提供了一系列查詢Elasticsearch集羣狀態的接口。json
/_cat/allocation #查看單節點的shard分配總體狀況 /_cat/shards #查看各shard的詳細狀況 /_cat/shards/{index} #查看指定分片的詳細狀況 /_cat/master #查看master節點信息 /_cat/nodes #查看全部節點信息 /_cat/indices #查看集羣中全部index的詳細信息 /_cat/indices/{index} #查看集羣中指定index的詳細信息 /_cat/segments #查看各index的segment詳細信息,包括segment名, 所屬shard, 內存(磁盤)佔用大小, 是否刷盤 /_cat/segments/{index}#查看指定index的segment詳細信息 /_cat/count #查看當前集羣的doc數量 /_cat/count/{index} #查看指定索引的doc數量 /_cat/recovery #查看集羣內每一個shard的recovery過程.調整replica。 /_cat/recovery/{index}#查看指定索引shard的recovery過程 /_cat/health #查看集羣當前狀態:紅、黃、綠 /_cat/pending_tasks #查看當前集羣的pending task /_cat/aliases #查看集羣中全部alias信息,路由配置等 /_cat/aliases/{alias} #查看指定索引的alias信息 /_cat/thread_pool #查看集羣各節點內部不一樣類型的threadpool的統計信息, /_cat/plugins #查看集羣各個節點上的plugin信息 /_cat/fielddata #查看當前集羣各個節點的fielddata內存使用狀況 /_cat/fielddata/{fields} #查看指定field的內存使用狀況,裏面傳field屬性對應的值 /_cat/nodeattrs #查看單節點的自定義屬性 /_cat/repositories #輸出集羣中註冊快照存儲庫 /_cat/templates #輸出當前正在存在的模板信息
每一個命令都支持使用?v參數,讓輸出內容表格顯示錶頭; pretty則讓輸出縮進更規範
bash
二、示例
1) 節點信息app
curl -X GET "localhost:9200/_cat/nodes?v&pretty" ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.18.0.4 52 97 6 0.02 0.11 0.28 mdi - es7_02 172.18.0.5 57 97 6 0.02 0.11 0.28 mdi * es7_01
heap.percent
堆內存佔用百分比ram.percent
內存佔用百分比cpu
CPU佔用百分比master
*
表示節點是集羣中的主節點
name
節點名
2) 分片信息curl
curl -X GET "localhost:9200/_cat/shards?v&pretty" index shard prirep state docs store ip node .monitoring-es-7-2019.08.30 0 p STARTED 21333 11.8mb 172.18.0.5 es7_01 .monitoring-es-7-2019.08.30 0 r STARTED 21333 11.8mb 172.18.0.4 es7_02 goods-index 0 p STARTED 1 2.5mb 172.18.0.5 es7_01 goods-index 0 r STARTED 1 2.5mb 172.18.0.4 es7_02 .kibana_1 0 p STARTED 4 22.4kb 172.18.0.5 es7_01 .kibana_1 0 r STARTED 4 22.4kb 172.18.0.4 es7_02
index
索引名稱shard
分片序號prirep
p
表示該分片是主分片
,r
表示該分片是複製分片
store
該分片佔用存儲空間node
所屬節點節點名
docs
分片存放的文檔
數
3) 索引信息ui
curl -X GET "localhost:9200/_cat/indices?v" health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open goods-index NhqSRJWUQiu46tdOKol4wA 1 1 1 7018 5mb 2.5mb green open .monitoring-es-7-2019.08.30 lVDNFDVdSXqqrn8CdI_XGg 1 1 21333 18920 23.6mb 11.8mb green open .kibana_1 rvSlNVjJTsus80klzU19jQ 1 1 4 1 44.9kb 22.4kb
health
索引的健康狀態index
索引名pri
索引主分片
數量rep
索引複製分片
數store.size
索引主分片
複製分片
總佔用存儲空間pri.store.size
索引總佔用空間, 不計算複製分片
佔用空間
<br>url
<font color=#FFD700> 2、索引CRUD命令</font>
一、查詢索引
查詢索引命令上面已經展現過了,這裏再補充一些
條件過濾
_cat/indices?v&health=yellow #查詢健康狀態爲yellow的索引
排序
_cat/indices?v&health=yellow&s=docs.count:desc #根據文檔數量進行索引排序
索引詳細信息
curl -X GET "localhost:9200/my_index/_stats?pretty" #索引詳細信息
二、建立索引
PUT /student { "settings": { "number_of_shards": 3, "number_of_replicas": 1 }, "mappings": { "properties": { "name": { "type":"text" }, "country": { "type":"keyword" }, "age": { "type":"integer" }, "date": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } } }
建立成功
三、刪除索引
curl -X DELETE "localhost:9200/index-name"
<br>
<font color=#FFD700> 3、文檔CRUD命令</font>
在講文檔的CRUD以前咱們要先理解 GET/PUT/POST/DELETE
POST /uri #建立 DELETE /uri/xxx #刪除 PUT /uri/xxx #更新或建立 GET /uri/xxx #查看
思考
:POST和PUT的區別
1)在ES中,若是不肯定文檔的ID,那麼就須要用POST,它能夠本身生成惟一的文檔ID。若是肯定文檔的ID,那麼就能夠用PUT,固然也能夠用POST,它們均可以建立或修改文檔(若是是修改,那麼_version版本號提升1)
2)PUT、GET、DELETE是冪等的,而POST並不必定是冪等。若是你對POST也指定了文檔ID,那它其實和PUT沒啥區別,那它就是冪等。若是你沒有指定文檔ID那麼就不是冪等操做了,由於同一數據,你執行屢次POST,那麼生成多個UUID的文檔,
也就是每POST一次都會新增一條數據。
一、建立文檔
1)PUT方式建立
PUT /student/_doc/1 { "name": "徐小小", "country": "杭州", "age": "3", "date": "2019-09-04" }
運行結果
2)POST方式建立
POST不指定主鍵
POST /student/_doc { "name": "徐小小", "country": "杭州", "age": "3", "date": "2019-09-04" }
運行結果
POST指定主鍵ID
POST /student/_doc/88 { "name": "徐小小", "country": "杭州", "age": "3", "date": "2019-09-04" }
運行結果
能夠明顯看出,POST也能夠指定文檔ID,若是指定文檔ID,那麼就和PUT沒有區別。ID不存在則建立,存在則更新而且_version
版本+1.
二、文檔查看
GET /student/_doc/1
如圖
三、文檔更新
商品PUT和POST執行的時候,若是指定的文檔ID存在,那麼就能夠執行更新操做。不過它們執行的是全量更新,若是須要單獨對某字段更新咱們可使用關鍵字_update
例如
POST /student/_update/1 { "doc" : { "age": 5 } }
如圖,發現age已經更新成功
四、文檔刪除
語法
DELETE /{index}/{type}/{id}
<br>
<font color=#FFD700>參考</font>
一、Elasticsearch核心技術與實戰---阮一鳴(eBay Pronto平臺技術負責人
四、文檔操做基本命令
<br> <br>
我相信,不管從此的道路多麼坎坷,只要抓住今天,早晚會在奮鬥中嚐到人生的甘甜。抓住人生中的一分一秒,賽過虛度中的一月一年!(9)
<br>
原文出處:https://www.cnblogs.com/qdhxhz/p/11461174.html