Elasticsearch Node API详解

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch Node API主要包括Nodes stats API和Nodes Info API,前者用于查看节点的统计信息,例如CPU、内存使用情况,后者则主要是查看节点本身的一些信息,例如主机名、IP地址等。其实Node API是属于Cluster API的一部分,但针对单个节点又显得相对独立,所以单独进行分析。

Elasticsearch Node API主要包括Nodes stats API和Nodes Info API,前者用于查看节点的统计信息,例如CPU、内存使用情况,后者则主要是查看节点本身的一些信息,例如主机名、IP地址等。

其实Node API是属于Cluster API的一部分,但针对单个节点又显得相对独立,所以单独进行分析。

01

查看节点统计信息(Nodes stats API)

API的访问格式如下代码块所示,其中<node_id>、<metric>、<index_metric>都是属于可选的选项。

GET /_nodes/<node_id>/stats/<metric>/<index_metric>

当不指定<node_id>时默认查询所有的节点,<metric>指定需要查询的相关指标的信息,多个指标使用逗号分开,如果不指定则返回全部指标信息。

metric支持选项

nodes-stats-parameter.jpg

当指定了<metric>可选项为indices或者不指定<metric>的时候,可以指定<index_metric>可选项,限制返回的响应内容,index_metric支持选项:

  • completion
  • docs
  • fielddata
  • flush
  • get
  • indexing
  • merge
  • query_cache
  • recovery
  • refresh
  • request_cache
  • search
  • segments
  • store
  • translog
  • warmer

获取所有节点的统计信息

$ curl -X GET "http://127.0.0.1:9200/_nodes/stats?pretty"

获取指定节点的统计信息

$ curl -X GET "http://127.0.0.1:9200/_nodes/nodeId1,nodeId2/stats?pretty"

详细的API信息可以参考官方文档。

特别关注docs、store、merges、refresh、flush、segments、fielddata、translog、os这些段,以下是案例:

"indices": {
                "docs": {
                    "count": 5,
                    "deleted": 0
                },
                "store": {
                    "size_in_bytes": 20471,
                    "reserved_in_bytes": 0
                }
}
"merges": {
                    "current": 0,
                    "current_docs": 0,
                    "current_size_in_bytes": 0,
                    "total": 0,
                    "total_time_in_millis": 0,
                    "total_docs": 0,
                    "total_size_in_bytes": 0,
                    "total_stopped_time_in_millis": 0,
                    "total_throttled_time_in_millis": 0,
                    "total_auto_throttle_in_bytes": 188743680
                }

docs段指明了文档的数量,特别是deleted字段指明的是未被merge的document。在elasticsearch中,segment是不可变的,删除document的操作实际上不会立刻从分段中删除文档,而是记录下删除的动作,等待merge操作的时候清除这些文档生成新的segment,这个值如果很大的话则需要进行介入进行分段的合并,这能够一定程度上提升性能。

store段指明了文档的大小。

merges展示了当前进行segments merge操作的情况,包括了当前在进行merge的document数量和内存使用情况,由于merge对于内存、IO都会有一定的损耗,特别是IO,对写入会有一定的影响,同理的,flushrefresh段的内容与translog flush和indexing buffer refresh有关,故这几个指标也是需要比较重点关注的,他们都提供了total和total_time,两者相除可以知道平均的操作执行时间,用于判断当前操作是否存在耗时过长的问题。

其他的分段都有各自的参考作用,例如os、mem、jvm等,完全可以通过获取相关的信息掌握节点操作系统或者JVM层面的情况,进而为监控提供数据来源或者是协助排查生产问题,如下,可以看到cpu使用率,内存使用率、内存交换情况等。

"cpu": {
                    "percent": 24,
                    "load_average": {
                        "1m": 5.2470703125
                    }
                },
                "mem": {
                    "total_in_bytes": 8589934592,
                    "free_in_bytes": 19509248,
                    "used_in_bytes": 8570425344,
                    "free_percent": 0,
                    "used_percent": 100
                },
                "swap": {
                    "total_in_bytes": 5368709120,
                    "free_in_bytes": 1934884864,
                    "used_in_bytes": 3433824256
                }
            }

02

查看节点信息(Nodes Info API)

API的访问格式如下代码块所示,其中<node_id>、<metric>都是属于可选的选项。

GET /_nodes/<node_id>/<metric>

当不指定<node_id>时默认查询所有的节点,<metric>指定需要查询的相关指标的信息,多个指标使用逗号分开,如果不指定则返回全部指标信息。

metric支持选项

nodes-info-parameter.jpg

response body中重要的字段如下:

nodes-info-response.jpg

通过以上可以看到Node  Info API与Node stats API有部分功能重合,Node Info  API更侧重于提供节点本身相关的属性信息,两者的搭配可以查看到关于节点整体运行的情况,特别是可以使用Node stats  API统计相关的指标,加入到集群的监控中。

03

查看热线程信息(Hot threads API)

检索有关集群中每个节点上当前热线程的信息,这个对于生产问题排查非常有用,例如节点CPU使用率高等问题。

curl -X GET http://127.0.0.1:9200/_nodes/hot_threads

结果如下,可以看到结果标注了cpu usage,可以明确看到线程cpu占用率。

::: {FantuanTech-Node-1}{ixSLP9-ERGaksd8-QX-LQQ}{4ZIEPzigRYKqbagah1I65g}{127.0.0.1}{127.0.0.1:9300}{dilmrt}{ml.machine_memory=8589934592, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}
   Hot threads at 2021-01-04T09:27:58.777Z, interval=500ms, busiestThreads=3, ignoreIdleThreads=true:
    0.0% (60micros out of 500ms) cpu usage by thread 'ticker-schedule-trigger-engine'
     10/10 snapshots sharing following 2 elements
       java.base@15/java.lang.Thread.sleep(Native Method)
       org.elasticsearch.xpack.watcher.trigger.schedule.engine.TickerScheduleTrig
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1天前
|
Kubernetes 安全 API
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
|
6天前
|
存储 自然语言处理 搜索推荐
Elasticsearch 8.10 同义词管理新篇章:引入同义词 API
Elasticsearch 8.10 同义词管理新篇章:引入同义词 API
13 0
|
7天前
|
存储 数据可视化 数据建模
阿里云大佬叮嘱我务必要科普这个 Elasticsearch API
阿里云大佬叮嘱我务必要科普这个 Elasticsearch API
14 0
|
14天前
|
缓存 监控 JavaScript
Node.js中构建RESTful API的最佳实践
【4月更文挑战第30天】本文介绍了在Node.js中构建RESTful API的最佳实践:选择合适的框架(如Express、Koa)、设计清晰的API接口(遵循HTTP动词和资源路径)、实现认证授权(JWT、OAuth 2.0)、错误处理、限流缓存、编写文档和测试,以及监控性能优化。这些实践有助于创建健壮、可维护和易用的API。
|
14天前
|
JavaScript API 开发者
深入了解Node.js的文件系统:Node.js文件系统API的使用与探索
【4月更文挑战第30天】本文深入探讨了Node.js的文件系统API,介绍了如何引入`fs`模块进行文件操作。内容包括异步读取和写入文件、删除文件、创建目录以及使用文件流进行高效操作。此外,还提到了文件系统的监视功能,帮助开发者全面掌握在Node.js中处理文件和目录的方法。
|
28天前
|
JavaScript API
Node.js API实例讲解——FS 文件夹操作
Node.js API实例讲解——FS 文件夹操作
32 0
|
1月前
|
存储 监控 大数据
【Elasticsearch专栏 15】深入探索:Elasticsearch使用API删除旧数据
本文探讨了如何使用Elasticsearch API管理并删除旧数据。Elasticsearch提供RESTful API,支持按条件批量删除。删除策略可基于时间、文档数量或索引。通过`DELETE BY QUERY` API,可以根据时间戳范围删除数据,如删除早于30天的记录。为处理大量数据,建议分批次进行,使用`scroll`和`size`参数控制。监控删除进度可使用任务ID。合理运用这些方法能有效优化存储,适应不同业务需求。
|
19天前
|
Java Maven 开发工具
【ElasticSearch 】IK 分词器安装
【ElasticSearch 】IK 分词器安装
23 1
|
1月前
|
数据可视化 索引
elasticsearch head、kibana 安装和使用
elasticsearch head、kibana 安装和使用
|
1月前
|
Java Windows
windows下 安装 Elasticsearch报错warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
windows下 安装 Elasticsearch报错warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
43 0