干貨 | Elasticsearch 開發(fā)實戰(zhàn)常用命令清單
0、背景
Elasticsearch 具有一組豐富的易于理解的 REST API,這些 API ?均可如下幾種方式通過 HTTP 調(diào)用進(jìn)行訪問。
Curl Postman head 插件 cerebro 工具 kibana
開發(fā)實戰(zhàn)環(huán)節(jié),我推薦使用:kibana Dev-tools。

原因如下:
有提示功能 方便快捷、效率高 不容易出錯
本文結(jié)合多年實戰(zhàn)經(jīng)驗和網(wǎng)絡(luò)資源,梳理出開發(fā)環(huán)節(jié)最重要的命令清單,希望對你有幫助!
1、Elasticsearch REST URL 拆解
1.1 REST URL和選項概述
舉個栗子:
POST?products/_search?size=0
{
??"aggs":?{
????"product_aggs":?{
??????"terms":?{
????????"field":"name.keyword"
??????}
????}
??}
}
調(diào)用REST API很容易,除了實際的主機(jī)名/ IP和端口外,它還包含四個部分:
動詞——REST調(diào)用的 GET,PUT,POST和DELETE部分。
在Kibana中,您可以直接指定這些名稱,對于cURL,請使用-X選項。
對應(yīng)示例中的:POST
路徑——API和路徑。
例如:/_cluster / health 或 /logstash-cron-2020.07.03/_mapping-路徑的第一部分通常是索引名稱,除非它以_開頭。
對應(yīng)示例中的:products/_search,其中products是索引。
參數(shù)——后面的各種選項?
例如?h或?v
對應(yīng)示例中的:?size=0。參數(shù)設(shè)定部分。
正文——某些調(diào)用需要JSON正文(例如設(shè)置選項),并將包含在{}中
對應(yīng)示例中的:檢索語句部分。
1.2 常用選項
有一些通用選項適用于許多(不是全部)URL。這些是:
?help——幫助選項。
將在列表中提供 API 可用的字段,其中包含短名稱和長名稱、說明等。
舉例:
GET?_cat/indices?help
?h =-“ h”——使用上方“幫助”顯示中的短名稱或長名稱指定要包括在結(jié)果中的字段。這些用逗號分隔,沒有空格。
舉例:
GET?_cat/indices?h=docs.count,store.size
這樣以后返回結(jié)果一頭霧水,相當(dāng)于 Excel 有 N 列字段,但沒有表頭一樣,很痛苦!
?v——'v'在回復(fù)的頂部包括字段名稱。
GET?_cat/indices?h=docs.count,store.size&v
-v 參數(shù)的妙處主要體現(xiàn)在:加上了表頭,直觀交互呈現(xiàn)。
?s——'s'用于排序,使用列出的字段作為排序鍵。
如下所示:我們可能會看到節(jié)點列表。包括:返回字段名稱,字段名稱要顯示并按名稱name排序:
GET?/_cat/nodes?v&h=heap.percent,diskUsedPercent,cpu,master,name&s=name
另外,Kibana 會將您的 Dev Tools 查詢保存在 cookie 中。
有了上面的背景知識,下面的常見開發(fā)相關(guān)的常用命令清單看起來就相對容易了。
2、狀態(tài) & 統(tǒng)計相關(guān)命令清單
最有用的 API 調(diào)用通常與集群的運(yùn)行狀況,狀態(tài)和統(tǒng)計信息有關(guān),例如:
2.1 獲取版本和集群名稱等信息。
GET?/?
2.2 獲取集群健康狀態(tài)等信息,包括集群名稱、節(jié)點數(shù)、數(shù)據(jù)節(jié)點數(shù)、分片等的一些統(tǒng)計信息。
GET?/_cluster/health
2.3 獲取節(jié)點列表信息。顯示了堆內(nèi)存、磁盤使用情況,CPU 、負(fù)載和主機(jī)角色。
用途:用來監(jiān)視負(fù)載和磁盤使用情況以及主機(jī)角色。
GET?/_cat/nodes?v&h=heap.percent,diskUsedPercent,cpu,load_1m,master,name&s=name
2.4 Index Level 索引層面健康
GET?/_cluster/health?level=indices&pretty
2.5 Shard Level 分片層面健康
GET?/_cluster/health?level=shards&pretty
2.6 獲取索引,文檔,緩存,段,節(jié)點等的集群統(tǒng)計信息的更深入概述。
用途:有助于基本故障排除。
GET?/_cluster/stats?
2.7 獲取節(jié)點級別的更多統(tǒng)計信息,包括堆使用情況等。
GET?/_nodes/stats?
3、線程相關(guān)狀態(tài)&統(tǒng)計命令清單
3.1 很長但有用的線程隊列視圖
GET?/_cat/thread_pool?v&h=node_name,name,type,active,size,queue,queue_size,rejected,largest,completed,min,max&s=node_name,name
3.2 查看熱點線程,用于排查誰在占用CPU資源等
GET?/_nodes/hot_threads/?
3.3 快速獲取索引模式。
例如:所有這些logstash *前綴索引的文檔總數(shù)的方法。
GET?/_cat/count/logstash*?v
4、索引相關(guān)狀態(tài)&統(tǒng)計命令清單
4.1 通配符索引列表獲取
包含:大小,文檔計數(shù),狀態(tài)等。
GET?/_cat/indices/logstash*?v
4.2 找到size 最大的索引
GET?/_cat/indices/logstash-*?v&h=index,ss&s=ss:desc
4.3 獲取狀態(tài)為黃色的索引
GET?/_cat/indices?v&health=yellow
紅色 red:至少一個主分片不可用。 黃色 yellow:至少一個副本分片不可用。 綠色 green:集群主、副本分片都可用,集群健康。
5、 設(shè)置相關(guān)清單
Elasticsearch中有許多設(shè)置,但最常見的是“集群”和“索引”級別。
5.1 ?集群設(shè)置
最基本的集群設(shè)置視圖——顯示非默認(rèn)的持久性和瞬態(tài)設(shè)置信息。
GET?/_cluster/settings
更大的列表視圖——包括所有默認(rèn)值,并使用平面視圖使其更易于閱讀。
GET?/_cluster/settings?include_defaults=true&flat_settings=true
5.2 索引設(shè)置
獲取指定索引的設(shè)置列表信息。
GET?/logstash-cron-2020.08.03/_settings?
獲取索引的元信息、設(shè)置信息以及Mapping信息。
GET?/logstash-cron-2020.08.03?
6、 關(guān)閉&刪除索引
6.1 關(guān)閉索引
支持單個或者模糊匹配多個索引。
POST?/logstash-*-2020.03.*/_close?
6.2 刪除索引
支持單個或者模糊匹配多個
DELETE?/logstash-*-2020.04.*?
7、故障排查清單
之前運(yùn)維清單有過陳述,開發(fā)也需要。
7.1 獲取:已分配和未分配的分片。
GET?/_cat/shards?v&h=n,index,shard,prirep,state,sto,sc,unassigned.reason,unassigned.details&s=sto,index
7.2 查看未分配的分片及原因
GET?_cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state?
7.3 查看未分配的細(xì)節(jié)說明信息
GET?/_cluster/allocation/explain
7.4 查看指定分片未分配的細(xì)節(jié)
GET?/_cluster/alloGET?/_cluster/allocation/explain?
{?"index":?"logstash-cloudtrail-2019.10.16",?"shard":?0,?"primary":?true}?cation/explain?{?"index":?"logstash-cloudtrail-2019.10.16",?"shard":?0,?"primary":?true}?
7.5 下線節(jié)點
PUT?_cluster/settings?pretty
{
??"transient":?{
????"cluster.routing.allocation.exclude._ip":?"10.0.0.1"
??}
}
8、模板清單
8.1 列舉已定義的所有模板
GET?/_cat/templates?v&s=order,name
8.2 列舉指定名稱的模板信息
GET?/_template/logstash
9、快照&恢復(fù)
9.1 列出系統(tǒng)中配置的快照存儲庫。大多數(shù)其他API調(diào)用都需要這些名稱。
GET?/_snapshot?
9.2 獲取任何正在運(yùn)行的快照的狀態(tài)和統(tǒng)計信息
GET?/_snapshot/_status?
9.3 獲取快照的有用信息
GET?/_cat/snapshots/my_repository?v&h=id,status,start_time,duration,indicies,successful_shards,failed_shards,total_shards
10、 分片分配與恢復(fù)清單
10.1 分片分配查看
GET?/_cat/allocation?v
10.2 分片恢復(fù)查看
GET?/_cat/recovery?v
10.3 運(yùn)行任務(wù)查看
GET?/_cat/pending_tasks?v
10.4 清理緩存
POST?/_cache/clear
小結(jié)
清單沒有面面俱到,清單的目的只是梳理知識體系。
而基礎(chǔ)知識的習(xí)得還是建議通過官方文檔查看即可,前提:熟悉官方文檔的目錄結(jié)構(gòu),做到會查、快查,逐步掌握開發(fā)實戰(zhàn)知識。
參考:
https://www.elkman.io/blog/useful-elasticsearch-api-urls
https://preview.mailerlite.com/u3c7e3/1490690490360665893/f2l9/
推薦:
更短時間更快習(xí)得更多干貨!
中國40%+Elastic認(rèn)證工程師出自于此!
