Elasticsearch(5)--- 基本命令(叢集相關命令、索引CRUD命令、文件CRUD命令)
Elasticsearch(5)--- 基本命令
這篇部落格的命令分為ES叢集相關命令
,索引CRUD命令
,文件CRUD命令
。這裡不包括Query查詢命令,它單獨寫一篇部落格。
一、ES叢集相關命令
ES叢集相關命令主要是_cat
命令,所以這裡詳細講解下該命令。
1、_cat命令
_cat
系列提供了一系列查詢Elasticsearch叢集狀態的介面。
/_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則讓輸出縮排更規範
2、示例
1) 節點資訊
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 -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) 索引資訊
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
索引總佔用空間, 不計算複製分片
佔用空間
二、索引CRUD命令
1、查詢索引
查詢索引命令上面已經展示過了,這裡再補充一些
條件過濾
_cat/indices?v&health=yellow #查詢健康狀態為yellow的索引
排序
_cat/indices?v&health=yellow&s=docs.count:desc #根據文件數量進行索引排序
索引詳細資訊
curl -X GET "localhost:9200/my_index/_stats?pretty" #索引詳細資訊
2、建立索引
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"
}
}
}
}
建立成功
3、刪除索引
curl -X DELETE "localhost:9200/index-name"
三、文件CRUD命令
在講文件的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、建立文件
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.
2、文件檢視
GET /student/_doc/1
如圖
3、文件更新
商品PUT和POST執行的時候,如果指定的文件ID存在,那麼就可以執行更新操作。不過它們執行的是全量更新,如果需要單獨對某欄位更新我們可以使用關鍵字_update
例如
POST /student/_update/1
{
"doc" : {
"age": 5
}
}
如圖,發現age已經更新成功
4、文件刪除
語法
DELETE /{index}/{type}/{id}
參考
1、Elasticsearch核心技術與實戰---阮一鳴(eBay Pronto平臺技術負責人
2、ElasticSearch常用命令
3、Elasticsearch 狀態查詢Cat介面
4、文件操作基本命令
5、ElasticSearch批量操作相關命令
我相信,無論今後的道路多麼坎坷,只要抓住今天,遲早會在奮鬥中嚐到人生的甘甜。抓住人生中的一分一秒,勝過虛度中的一月一年!(9)
<