Elasticsearch 具有一组丰富的易于理解的 REST API,这些 API 均可如下几种方式通过 HTTP 调用进行访问。
开发实战环节,我推荐使用:kibana Dev-tools。
原因如下:
本文结合多年实战经验和网络资源,梳理出开发环节最重要的命令清单,希望对你有帮助!
举个栗子:
POST products/_search?size=0
{
"aggs": {
"product_aggs": {
"terms": {
"field":"name.keyword"
}
}
}
}
调用REST API很容易,除了实际的主机名/ IP和端口外,它还包含四个部分:
在Kibana中,您可以直接指定这些名称,对于cURL,请使用-X选项。
对应示例中的:POST
例如:/_cluster / health 或 /logstash-cron-2020.07.03/_mapping-路径的第一部分通常是索引名称,除非它以_开头。
对应示例中的:products/_search,其中products是索引。
例如?h或?v
对应示例中的:?size=0。参数设定部分。
对应示例中的:检索语句部分。
有一些通用选项适用于许多(不是全部)URL。这些是:
将在列表中提供 API 可用的字段,其中包含短名称和长名称、说明等。
举例:
GET _cat/indices?help
举例:
GET _cat/indices?h=docs.count,store.size
这样以后返回结果一头雾水,相当于 Excel 有 N 列字段,但没有表头一样,很痛苦!
GET _cat/indices?h=docs.count,store.size&v
-v 参数的妙处主要体现在:加上了表头,直观交互呈现。
如下所示:我们可能会看到节点列表。包括:返回字段名称,字段名称要显示并按名称name排序:
GET /_cat/nodes?v&h=heap.percent,diskUsedPercent,cpu,master,name&s=name
另外,Kibana 会将您的 Dev Tools 查询保存在 cookie 中。
有了上面的背景知识,下面的常见开发相关的常用命令清单看起来就相对容易了。
最有用的 API 调用通常与集群的运行状况,状态和统计信息有关,例如:
GET /
GET /_cluster/health
用途:用来监视负载和磁盘使用情况以及主机角色。
GET /_cat/nodes?v&h=heap.percent,diskUsedPercent,cpu,load_1m,master,name&s=name
GET /_cluster/health?level=indices&pretty
GET /_cluster/health?level=shards&pretty
用途:有助于基本故障排除。
GET /_cluster/stats
GET /_nodes/stats
GET /_cat/thread_pool?v&h=node_name,name,type,active,size,queue,queue_size,rejected,largest,completed,min,max&s=node_name,name
GET /_nodes/hot_threads/
例如:所有这些logstash *前缀索引的文档总数的方法。
GET /_cat/count/logstash*?v
包含:大小,文档计数,状态等。
GET /_cat/indices/logstash*?v
GET /_cat/indices/logstash-*?v&h=index,ss&s=ss:desc
GET /_cat/indices?v&health=yellow
Elasticsearch中有许多设置,但最常见的是“集群”和“索引”级别。
最基本的集群设置视图——显示非默认的持久性和瞬态设置信息。
GET /_cluster/settings
更大的列表视图——包括所有默认值,并使用平面视图使其更易于阅读。
GET /_cluster/settings?include_defaults=true&flat_settings=true
获取指定索引的设置列表信息。
GET /logstash-cron-2020.08.03/_settings
获取索引的元信息、设置信息以及Mapping信息。
GET /logstash-cron-2020.08.03
支持单个或者模糊匹配多个索引。
POST /logstash-*-2020.03.*/_close
支持单个或者模糊匹配多个
DELETE /logstash-*-2020.04.*
之前运维清单有过陈述,开发也需要。
GET /_cat/shards?v&h=n,index,shard,prirep,state,sto,sc,unassigned.reason,unassigned.details&s=sto,index
GET _cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state
GET /_cluster/allocation/explain
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}
PUT _cluster/settings?pretty
{
"transient": {
"cluster.routing.allocation.exclude._ip": "10.0.0.1"
}
}
GET /_cat/templates?v&s=order,name
GET /_template/logstash
GET /_snapshot
GET /_snapshot/_status
GET /_cat/snapshots/my_repository?v&h=id,status,start_time,duration,indicies,successful_shards,failed_shards,total_shards
GET /_cat/allocation?v
GET /_cat/recovery?v
GET /_cat/pending_tasks?v
POST /_cache/clear
清单没有面面俱到,清单的目的只是梳理知识体系。
而基础知识的习得还是建议通过 官方文档查看即可,前提:熟悉官方文档的目录结构,做到会查、快查,逐步掌握开发实战知识。