ElasticSearch學習之Es集群Api操作示例
前言
該系列默認開啟Nacos 服務,還不會搭建的小伙伴可以參考往期文章~
上文,我們帶大家利用docker來快速搭建Es集群,如果還不會搭建的小伙伴,可以閱讀上文,參考我的部署方式。
本期我們重點圍繞es本身來給大家作一些講解以及實戰(zhàn)。雖然市面上已經(jīng)有一些成熟的ORM框架可以很好的根springboot整合,我們只要調(diào)調(diào)方法就好了,但是對于我們初學來講,不是很友好,首先我們得弄清楚它到底是怎么進行操作的。
舉個例子,哪天領(lǐng)導跟你講,現(xiàn)在幫我拉一批數(shù)據(jù),半小時之后給我,你難不成回復等我開發(fā)完,上完線才能查到?而且這種可能只是一次性的需求,顯然是不大行的。這時,如果你可以脫離框架,知道它的一些查詢語法,問題不就很快就解決了,也不用你開發(fā)再調(diào)試。
這里主要想告訴大家,學習新知識的時候,首先要弄清楚知識的本身,學習需要循序漸進,本節(jié)主要帶大家學習Es集群Api操作,好了, 廢話不多說直接開整吧~
Es集群Api操作
在這之前,我們需要做一些準備工作,就是上一節(jié)最后的部分,我們運行好es集群服務后,打開kibana的控制臺,打開之后,我會帶著大家一一操作。
_cat
它的作用是幫助開發(fā)者快速查詢Elasticsearch的相關(guān)信息,比如我現(xiàn)在想要直掛的了解es集群的狀態(tài)。
我們在控制臺輸入GET _cat,點擊運行按鈕,它會輸出它的全部路由,可以簡單的理解為它的所有調(diào)用方式
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates
獲取當前集群主節(jié)點信息
語法:
GET /_cat/master
輸出:
_1g6ImOFQNqC1OBObqqnvw 172.19.0.3 172.19.0.3 es02
我們可以看到當前的一個主節(jié)點是es02,雖然信息是輸出了,但是看的好像不大清楚,因為沒有標題。下面給大家介紹一個標題小技巧,后邊加上?v就可以看到標題了
GET /_cat/master?v
輸出:
id host ip node _1g6ImOFQNqC1OBObqqnvw 172.19.0.3 172.19.0.3 es02
但是有的情況下,會有大量的標題,而我們只想看到部分信息,怎么辦?比如我指向看到ip,這么做就可以了
GET /_cat/master?h=ip
輸出:
172.19.0.3
當然,我們也可以連帶標題
GET /_cat/master?h=ip&v
輸出:
ip 172.19.0.3
當然,我們在不清楚字段意思的時候,也可以尋求幫助
GET /_cat/master?help
id | | node id host | h | host name ip | | ip address node | n | node name
這種方法也適用其它的_cat查詢語句
獲取集群當中節(jié)點信息
語法:
GET /_cat/nodes?v
輸出:
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 172.19.0.3 20 73 0 0.02 0.05 0.15 dilm * es02 172.19.0.4 30 73 0 0.02 0.05 0.15 dilm - es03 172.19.0.2 27 73 0 0.02 0.05 0.15 dilm - es01
獲取集群健康信息
語法:
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 1669950213 03:03:33 es-cluster green 3 3 6 3 0 0 0 0 - 100.0%
重點看一下status,輸出了一個green,說明它是健康狀態(tài)
獲取集群索引信息
GET _cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .kibana_task_manager_1 Kgl57A8fSDygmcJrnFm1pA 1 1 2 0 61.4kb 41.4kb green open .apm-agent-configuration ozJ-wxmtSaSXhRjBkpYbrQ 1 1 0 0 566b 283b green open .kibana_1 1CywDD-zSxGotJuIfPc_4w 1 1 15 6 146.1kb 66.8kb
可以看到一些默認的索引,以及它們的健康狀態(tài),占用的磁盤大小等信息
獲取集群別名信息
GET _cat/aliases?v
alias index filter routing.index routing.search is_write_index .kibana .kibana_1 - - - - .kibana_task_manager .kibana_task_manager_1 - - - -
_cluster
用于通過restful的api形式進行集群信息的獲取和操作,與_cat類似,但是_cluster是基于json形式進行數(shù)據(jù)返回
查詢集群健康狀態(tài)
GET /_cluster/health
{
"cluster_name" : "es-cluster",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 3,
"active_shards" : 6,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
查詢集群統(tǒng)計信息
GET /_cluster/stats
會詳細列出當前集群總分片樹,總主分片數(shù),副分片數(shù),安裝的插件等集群所有統(tǒng)計信息,如果不明白分片是啥也沒關(guān)系,先學會使用,后邊會給大家總結(jié)它的原理,因為這部分需要一些前置知識,我們先上手操作。
{
"_nodes" : {
"total" : 3,
"successful" : 3,
"failed" : 0
},
"cluster_name" : "es-cluster",
"cluster_uuid" : "ardUAhdGQvKKJJxei8Hs8A",
"timestamp" : 1669951414177,
"status" : "green",
"indices" : {
"count" : 3,
"shards" : {
"total" : 6,
"primaries" : 3,
"replication" : 1.0,
"index" : {
"shards" : {
"min" : 2,
"max" : 2,
"avg" : 2.0
},
"primaries" : {
"min" : 1,
"max" : 1,
"avg" : 1.0
},
"replication" : {
"min" : 1.0,
"max" : 1.0,
"avg" : 1.0
}
}
},
"docs" : {
"count" : 22,
"deleted" : 6
},
"store" : {
"size_in_bytes" : 118135
},
"fielddata" : {
"memory_size_in_bytes" : 1216,
"evictions" : 0
},
"query_cache" : {
"memory_size_in_bytes" : 0,
"total_count" : 0,
"hit_count" : 0,
"miss_count" : 0,
"cache_size" : 0,
"cache_count" : 0,
"evictions" : 0
},
"completion" : {
"size_in_bytes" : 0
},
"segments" : {
"count" : 11,
"memory_in_bytes" : 23623,
"terms_memory_in_bytes" : 16467,
"stored_fields_memory_in_bytes" : 3432,
"term_vectors_memory_in_bytes" : 0,
"norms_memory_in_bytes" : 1152,
"points_memory_in_bytes" : 0,
"doc_values_memory_in_bytes" : 2572,
"index_writer_memory_in_bytes" : 0,
"version_map_memory_in_bytes" : 0,
"fixed_bit_set_memory_in_bytes" : 528,
"max_unsafe_auto_id_timestamp" : -1,
"file_sizes" : { }
}
},
"nodes" : {
"count" : {
"total" : 3,
"coordinating_only" : 0,
"data" : 3,
"ingest" : 3,
"master" : 3,
"ml" : 3,
"voting_only" : 0
},
"versions" : [
"7.6.2"
],
"os" : {
"available_processors" : 48,
"allocated_processors" : 48,
"names" : [
{
"name" : "Linux",
"count" : 3
}
],
"pretty_names" : [
{
"pretty_name" : "CentOS Linux 7 (Core)",
"count" : 3
}
],
"mem" : {
"total_in_bytes" : 24514228224,
"free_in_bytes" : 6337855488,
"used_in_bytes" : 18176372736,
"free_percent" : 26,
"used_percent" : 74
}
},
"process" : {
"cpu" : {
"percent" : 0
},
"open_file_descriptors" : {
"min" : 444,
"max" : 458,
"avg" : 449
}
},
"jvm" : {
"max_uptime_in_millis" : 2533693,
"versions" : [
{
"version" : "13.0.2",
"vm_name" : "OpenJDK 64-Bit Server VM",
"vm_version" : "13.0.2+8",
"vm_vendor" : "AdoptOpenJDK",
"bundled_jdk" : true,
"using_bundled_jdk" : true,
"count" : 3
}
],
"mem" : {
"heap_used_in_bytes" : 470693600,
"heap_max_in_bytes" : 1556938752
},
"threads" : 396
},
"fs" : {
"total_in_bytes" : 723860312064,
"free_in_bytes" : 508481421312,
"available_in_bytes" : 508481421312
},
"plugins" : [ ],
"network_types" : {
"transport_types" : {
"security4" : 3
},
"http_types" : {
"security4" : 3
}
},
"discovery_types" : {
"zen" : 3
},
"packaging_types" : [
{
"flavor" : "default",
"type" : "docker",
"count" : 3
}
],
"ingest" : {
"number_of_pipelines" : 2,
"processor_stats" : {
"gsub" : {
"count" : 0,
"failed" : 0,
"current" : 0,
"time_in_millis" : 0
},
"script" : {
"count" : 0,
"failed" : 0,
"current" : 0,
"time_in_millis" : 0
}
}
}
}
}
查詢集群狀態(tài)
GET /_cluster/state
會列出當前集群所有節(jié)點信息,以及所有索引的setting和mapping。同樣的,json很大,數(shù)據(jù)也都很詳細
結(jié)束語
本節(jié)主要帶大家體驗了一下它的api操作,重點帶大家學習了集群相關(guān)的api,下一節(jié)帶大家學習索引相關(guān)的api,這個部分大家要仔細閱讀,因為都是重點,更多關(guān)于ElasticSearch Es集群Api操作的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringValidation數(shù)據(jù)校驗之約束注解與分組校驗方式
本文將深入探討Spring Validation的核心功能,幫助開發(fā)者掌握約束注解的使用技巧和分組校驗的高級應用,從而構(gòu)建更加健壯和可維護的Java應用程序,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
解決java.lang.NullPointerException報錯以及分析出現(xiàn)的幾種原因
這篇文章介紹了解決java.lang.NullPointerException報錯的方法,以及分析出現(xiàn)的幾種原因。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
SpringBoot + thymeleaf 實現(xiàn)讀取視頻列表并播放視頻功能
這篇文章主要介紹了SpringBoot + thymeleaf 實現(xiàn)讀取視頻列表并播放視頻功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
解決myBatis generator逆向生成沒有根據(jù)主鍵的select,update和delete問題
這篇文章主要介紹了解決myBatis generator逆向生成沒有根據(jù)主鍵的select,update和delete問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

