elasticsearch(四) 之 elasticsearch常用的一些叢集命令
阿新 • • 發佈:2018-12-10
elasticsearch常用的一些叢集命令
檢視叢集健康狀態
get請求 /_cat/health?v epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1543918646 18:17:26 haha-elk yellow 1 1 3481 3481 0 0 3480 0 - 50.0% 時間戳 utc時間 叢集名稱 叢集狀態 總的節點數 儲存節點 分片數量 複製分片數量 主要講下 status 叢集的狀態有三種 green,yellow,red - green 叢集狀態健康完善 - yellow 所有資料可用,但沒有副本,當我們是單點叢集的時候,我們就是yellow狀態 - red 某些資料由於某種原因不可用。
檢視叢集的節點列表
get請求
/_cat/nodes?v
通過這個命令我們可以檢視我們叢集中有幾個節點
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1 72 89 9 0.23 0.26 0.21 mdi * haha-elastic-1
地址 堆所佔百分比 記憶體使用的百分比 cpu 負載 1分鐘 2分鐘 15分鐘(top) 是否為主節點 節點名稱
檢視所有的索引
get請求 /_cat/indices?V health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open ljf-order-service-2018-10-04 XhIN9cfFTO6ZaGLg4Ucuog 5 1 2874 0 1.1mb 1.1mb yellow open ljf-account-service-2018-11-01 1NXXkKZnSxub5quXwNQqUQ 5 1 7603 0 2.4mb 2.4mb 健康狀態 狀態 索引名稱 id 主分片 一個副本(預設值) 文件數量 刪除文件的數量 大小 副本大小 您可能還注意到客戶索引標記了黃色執行狀況。回想一下我們之前的討論,黃色表示某些副本尚未(尚未)分配。此索引發生這種情況的原因是因為預設情況下Elasticsearch為此索引建立了一個副本。由於我們目前只有一個節點在執行,因此在另一個節點加入叢集的較晚時間點之前,尚無法分配一個副本(用於高可用性)。將該副本分配到第二個節點後,此索引的執行狀況將變為綠色。
刪除索引
get請求
XDELETE /'索引名稱'?pretty
刪除成功返回值
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
查詢索引的某個文件內容
get請求
/indexname/type/id
indexname ---> 索引名稱 示例:l1-online-h5-service-2018-12-05
type ---> 文件型別 (一般為doc)
id ---> id值
更新文件
elasticsearch 更新文件的時候是會刪除舊的文件,給新的文件編制索引。
POST /indexname/type/id/_update?pretty
{
"doc": { "name": "Jane Doe" }
}
刪除文件
DELETE /indexname/type/id?pretty
檢視分片的分佈和裡面文件的大小
get 請求
/_cat/shards?v
返回內容解析
index(索引名稱) shard(分片位置) prirep(主分片還是副本) state(狀態) docs(文件數量) store(儲存大小) ip(節點地址) node(節點名稱)
ljf-online-user-service-2018-11-13 2 p STARTED 4189 2.1mb 172.16.2.208 djx-elastic-1
ljf-online-user-service-2018-11-13 2 r STARTED 4189 2.1mb 172.16.2.209 djx-elastic-2
ljf-online-user-service-2018-11-13 3 p STARTED 4172 2.1mb 172.16.2.208 djx-elastic-1
ljf-online-user-service-2018-11-13 3 r STARTED 4172 2.1mb 172.16.2.209 djx-elastic-2
ljf-online-user-service-2018-11-13 1 p STARTED 4110 2.1mb 172.16.2.208 djx-elastic-1
截止LUCENE-5843,最大文件數限制是2,147,483,519(= Integer.MAX_VALUE - 128)文件。
自動建立索引
elasticsearch.yml 下的action.auto_create_index
預設是開啟的,如果我們需要關閉的話,我們需要允許x-apck去建立索引。
新增以下內容:
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*
定時刪除索引
#!/bin/bash
######################################################
# $Name: clean_amazon_index.sh
# $Version: v1.0
# $Function: clean amazon log index
# $Author: djx
# $Create Date: 2017-10-18
# $Description: shell
######################################################
#本文未加檔案鎖,需要的可以加
#指令碼的日誌檔案路徑
CLEAN_LOG="/var/log/clean_amazon_index.log"
#索引字首
INDEX_PRFIX="amazon-mysql-log"
#elasticsearch 的主機ip及埠
SERVER_PORT=192.168.1.123:9200
#取出已有的索引資訊
INDEXS=$(curl -s "${SERVER_PORT}/_cat/indices?v" |grep "${INDEX_PRFIX}"|awk '{print $3}')
#刪除多少天以前的日誌,假設輸入10,意味著10天前的日誌都將會被刪除
DELTIME=10
# seconds since 1970-01-01 00:00:00 seconds
SECONDS=$(date -d "$(date +%F) -${DELTIME} days" +%s)
#判斷日誌檔案是否存在,不存在需要建立。
if [ ! -f "${CLEAN_LOG}" ]
then
touch "${CLEAN_LOG}"
fi
#刪除指定日期索引
echo "----------------------------clean time is $(date +%Y-%m-%d_%H:%M:%S) ------------------------------" >>${CLEAN_LOG}
for del_index in ${INDEXS}
do
indexDate=$( echo ${del_index} |cut -d "-" -f 4,5,6 )
#根據索引的名稱的長度進行切割,不同長度的索引在這裡需要進行對應的修改
indexSecond=$( date -d ${indexDate} +%s )
if [ $(( $SECONDS- $indexSecond )) -gt 0 ]
then
echo "${del_index}" >>${CLEAN_LOG}
#取出刪除索引的返回結果
delResult=`curl -s -XDELETE "${SERVER_PORT}/"${del_index}"?pretty" |sed -n '2p'`
#寫入日誌
echo "clean time is $(date)" >>${CLEAN_LOG}
echo "delResult is ${delResult}" >>${CLEAN_LOG}
fi
done
最後新增到定時任務即可。