elasticsearch(四) 之 elasticsearch常用的一些集群命令


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值

image

更新文檔

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

最后添加到定時任務即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM