Elasticsearch Index Monitoring(索引监控)之Index Stats API详解

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: Elasticsearch Index Monitoring(索引监控)之Index Stats API详解

本文将详细介绍Elasticsearch Index Monitoring监控命令之Index Stats API。


索引状态统计。默认情况下,该API会返回所有类型的统计信息,Indices Stats返回如下类型的统计信息。


image.png

文档总数量(包含已删除的文档),调用文档删除API后并不会立即将文档物理删除,会保留一段时间,受refreshing the index的影响。其返回示例如下:


1"docs" : {
2         "count" : 1286,
3          "deleted" : 0
4  }

image.png

索引存储的总大小,其返回示例如下:

1"store" : {
2       "size_in_bytes" : 459254 
3}

其返回字段说明如下:


  • size_in_bytes
    索引大小,单位为字节。


image.png

新增、更新、删除索引操作的统计信息,其返回示例如下:

1"indexing" : {
 2              "index_total" : 0,     
 3              "index_time_in_millis" : 0, 
 4              "index_current" : 0,            
 5              "index_failed" : 0,              
 6              "delete_total" : 0,                
 7              "delete_time_in_millis" : 0, 
 8              "delete_current" : 0,           
 9              "noop_update_total" : 0,     
10              "is_throttled" : false,            
11              "throttle_time_in_millis" : 0  
12        }

其返回字段说明如下:


  • index_total
    索引操作总次数。
  • index_time_in_millis
    索引操作总耗时。
  • index_current
    当前正在执行索引操作的个数。
  • index_failed
    失败的索引操作次数。
  • delete_total
    执行删除索引操作的次数。
  • delete_time_in_millis
    删除索引操作总耗时。
  • delete_current
    当前正在执行删除索引操作的个数。
  • noop_update_total
    空更新总次数(检测到空更新的次数)。
  • is_throttled
    索引是否处在merge throttling control(合并节流控制状态)。
  • throttle_time_in_millis
    索引处在merge throttling control(合并节流状态)的时间开销。

image.png

get api 统计信息,其返回示例如下:

1"get" : {
2          "total" : 0,                             
3          "time_in_millis" : 0,              
4          "exists_total" : 0,                  
5          "exists_time_in_millis" : 0,    
6          "missing_total" : 0,                
7          "missing_time_in_millis" : 0,  
8          "current" : 0                            
9}

其返回字段说明如下:


  • total
    get api总调用次数。
  • time_in_millis
    get api总耗时。
  • exists_total
    命中的次数。
  • exists_time_in_millis
    命中的操作总耗时。
  • missing_total
    未命中的总次数。
  • missing_time_in_millis
    未命中的操作的总耗时。
  • current


当前正在执行的个数。

image.png

查询API的统计信息,其返回示例如下:

1       "search" : {
 2          "open_contexts" : 0,                      
 3          "query_total" : 0,                            
 4          "query_time_in_millis" : 0,             
 5          "query_current" : 0,                       
 6          "fetch_total" : 0,                             
 7          "fetch_time_in_millis" : 0,              
 8          "fetch_current" : 0,                        
 9          "scroll_total" : 0,                            
10          "scroll_time_in_millis" : 0,             
11          "scroll_current" : 0,                       
12          "suggest_total" : 0,                       
13          "suggest_time_in_millis" : 0,        
14          "suggest_current" : 0                    
15        },


其返回字段说明如下:


  • open_contexts
    正在打开的查询上下文个数。
  • query_total
    查询出来的总数据条数。
  • query_time_in_millis
    查询阶段所耗费的时间。
  • query_current
    当前正在查询个数。
  • fetch_total
    Fetch操作的次数。
  • fetch_time_in_millis
    Fetch阶段总耗时时间。
  • fetch_current
    正在fetch的次数。
  • scroll_total
    通过scroll api查询数据总条数。
  • scroll_time_in_millis
    通过scroll api总耗时时间。
  • scroll_current
    当前滚动API调用次数。
  • suggest_total
    通过suggest api获取的推荐总数量。
  • suggest_time_in_millis
    suggest总耗费时间。
  • suggest_current


正在执行suggest api的个数。

image.png

合并相关的统计信息,其输出示例如下:

1   "merges" : {
 2        "current" : 0,                                                        
 3        "current_docs" : 0,                                        
 4        "current_size_in_bytes" : 0,                                
 5        "total" : 0,                                                            
 6        "total_time_in_millis" : 0,                               
 7        "total_docs" : 0,                                                 
 8        "total_size_in_bytes" : 0,                                    
 9        "total_stopped_time_in_millis" : 0,                     
10        "total_throttled_time_in_millis" : 0,                     
11        "total_auto_throttle_in_bytes" : 104857600       
12      }


其返回字段说明如下:


  • current
    总发生的合并次数。
  • current_docs
    当前正在发生合并的文档数。
  • current_size_in_bytes
    当前合并参与的文档总大小,单位字节。
  • total
    总发生的合并次数。
  • total_time_in_millis
    合并的总耗时(单位毫秒)。
  • total_docs
    merge(合并)时总处理的文档个数。
  • total_size_in_bytes
    merge(合并)时总处理的文档总大小(字节)。
  • total_stopped_time_in_millis
    merge(合并)时总停止时间(吞吐率为0)。
  • total_throttled_time_in_millis
    超过指定吞吐率而暂停的时间(节流)。
  • total_auto_throttle_in_bytes
    自动进行流控的阔值,默认速率20m/s。


image.png

刷新索引相关的统计。


1       "refresh" : {
2        "total" : 15,                                                               
3        "total_time_in_millis" : 0,                                         
4        "listeners" : 0                                                          
5      }


其返回字段说明如下:


  • total
    执行刷新的总次数。
  • total_time_in_millis
    执行刷新总耗时。
  • listeners
    等待刷新侦听器的数量。


image.png

刷盘的统计信息。


1"flush" : {
2        "total" : 5,                                                        
3        "periodic" : 0,                                                  
4        "total_time_in_millis" : 0                                 
5      }


其返回字段说明如下:


  • total
    执行刷盘操作的次数。
  • periodic
    当translog超过刷新阈值时周期性触发的刷新次数。
  • total_time_in_millis
    刷盘操作总耗时时间。

image.png

索引分片(shard)预热统计信息,分片预热是指为索引创建一个分片节点时,是否对该索引预热(为索引创建一bitSet位图)。其统计示例如下:


1"warmer" : {
2        "current" : 0,    
3        "total" : 5,        
4        "total_time_in_millis" : 0   
5      }


其返回字段说明如下:


  • current
    当前正在预热的个数。
  • total
    总共发生的预热次数。
  • total_time_in_millis
    分片预热总耗时。


image.png

查询缓存统计信息,其示例如下:


1"query_cache" : {
2        "memory_size_in_bytes" : 0,   
3        "total_count" : 0,                     
4        "hit_count" : 0,                        
5        "miss_count" : 0,                   
6        "cache_size" : 0,                    
7        "cache_count" : 0,                 
8        "evictions" : 0                        
9      }


其返回字段说明如下:


  • memory_size_in_bytes
    查询缓存占用的内存空间,单位为字节。
  • total_count
    缓存中查询的总次数,等于hit_count + miss_count。
  • hit_count
    查询缓存命中的次数。
  • miss_count
    查询缓存未命中的次数。
  • cache_size
    当前查询缓存中缓存文档的个数。
  • cache_count
    查询缓存总缓存文档个数(包含已经被换出evictions的文档个数)。
  • evictions
    查询缓存被逐出的总数。

image.png

fielddata统计信息,fielddata主要用加快text字段排序与聚合的性能,存储词根与文档的映射关系存储在在内存,在内存中进行排序与聚合。


1"fielddata" : {
2          "memory_size_in_bytes" : 0,         
3          "evictions" : 0                                 
4        }


其返回字段说明如下:


  • memory_size_in_bytes
    当前占用内存的大小。
  • evictions
    被逐出词根的个数。

image.png

completion(自动填充)相关统计,其输出示例为:

1"completion" : {
2          "size_in_bytes" : 0                 
3 },


其返回字段说明如下:


  • size_in_bytes
    自动提示占用字节数。

image.png

检索打开段的内存使用情况。可选地,设置include_segment_file_size=true(默认为false),将输出每个Lucene索引文件的聚合磁盘使用情况,其返回示例如下:


1"segments" : {
 2          "count" : 32,                                                         
 3          "memory_in_bytes" : 38078,                                
 4          "terms_memory_in_bytes" : 23838,                     
 5          "stored_fields_memory_in_bytes" : 9984,            
 6          "term_vectors_memory_in_bytes" : 0,                  
 7          "norms_memory_in_bytes" : 2048,                       
 8          "points_memory_in_bytes" : 32,                           
 9          "doc_values_memory_in_bytes" : 2176,               
10          "index_writer_memory_in_bytes" : 0,                   
11          "version_map_memory_in_bytes" : 0,                  
12          "fixed_bit_set_memory_in_bytes" : 0,                  
13          "max_unsafe_auto_id_timestamp" : -1,              
14          "file_sizes" : { }                                                  
15   },


其返回字段说明如下:


  • count
    该索引目前拥有的总段数。
  • memory_in_bytes
    该索引缓存在内存中字节数。
  • terms_memory_in_bytes
    倒排索引(term)缓存在内中所占字节数。
  • stored_fields_memory_in_bytes
    该索引定义为stored_fields字段在内存中缓存的字节数。
  • term_vectors_memory_in_bytes
    该索引term_vectors(词向量)在内存中所占字节数量。
  • norms_memory_in_bytes
    该索引存储对应norms=true的字段当前在内存中缓存字节数。
  • points_memory_in_bytes
    与地理位置相关的缓存数据。
  • doc_values_memory_in_bytes
    设置为doc_values缓存在内存中的字节数(doc_values,列式存储)。
  • index_writer_memory_in_bytes
    用于优化索引写的缓存(减少写磁盘的频率)。
  • version_map_memory_in_bytes
    关于文档的版本映射所占内存大小。
  • fixed_bit_set_memory_in_bytes
    fixed_bit_set内存,专门用来做nested查询的。
  • max_unsafe_auto_id_timestamp
    es内部当前的自增ID。
  • file_sizes
    其中如果设置为true,则file_sizes主要包含如下统计信息:

e02032ed391c40c1c4f0b24e7a556569.jpg

image.png

translog统计信息(有点类似于Innodb的redo日志),其输出示例如下:

1"translog" : {
2          "operations" : 0,                                               
3          "size_in_bytes" : 1100,                                    
4          "uncommitted_operations" : 0,                        
5          "uncommitted_size_in_bytes" : 1100,             
6          "earliest_last_modified_age" : 0                     
7        }


其返回字段说明如下:


  • operations
    写translog的次数(索引文档、更新文档、删除文档的总操作数量)。
  • size_in_bytes
    translog实例管理的translog文件总大小。(一个索引引擎(InternalEngine)示例包含一个Translog实例)。
  • uncommitted_operations
    当前还未提交到lucene中的操作次数(索引文档、更新文档、删除文档的操作数量)。
  • uncommitted_size_in_bytes
    translog中未提交到Lucene中的字节数。
  • earliest_last_modified_age
    以秒为单位返回translog文件中最老条目的年龄。


image.png

请求缓存的统计信息,其输出示例如下:

1"request_cache" : {
2          "memory_size_in_bytes" : 0,                         
3          "evictions" : 0,                                               
4          "hit_count" : 0,                                               
5          "miss_count" : 0                                            
6},


其返回字段说明如下:


  • memory_size_in_bytes
    请求缓存占用内存总大小。
  • evictions
    请求缓存被剔除出次数。
  • hit_count
    请求缓存被命中次数。
  • miss_count
    请求缓存未命中次数。

image.png

recovery(恢复)相关的统计信息,其输出示例:

1"recovery" : {
2          "current_as_source" : 0,                                                  
3          "current_as_target" : 0,                                
4          "throttle_time_in_millis" : 0                          
5}


其返回字段说明如下:


  • current_as_source
    作为源分片,正在执行恢复的分片数量 。
  • current_as_target
    作为目标分片,正在执行恢复的分片数量。
  • throttle_time_in_millis
    恢复过程总等待时间。


Indices Stats返回的结果是在索引级别的聚合,包含三个维度:primaries(所有主节点进行聚合)、total(所有主节点、副本节点进行聚合)、indices(索引级别)。


下面给出在JAVA中使用Index Stats示例来结束本篇的讲解。


ElasticSearch Index Stats JAVA示例如下:(当前elasticsearch6.4.0 High Rest Client未提供对应API的封装)


1public static final void test_Indices_StatsIndex() {
 2      TransportClient client = EsClient.getTransportClient();
 3      try {
 4         IndicesStatsRequest request = new IndicesStatsRequest();
 5//       request.indices("aggregations_index02");
 6//       request.indices("logs_write");
 7//       request.includeSegmentFileSizes(true);
 8         ActionFuture<IndicesStatsResponse> responseFuture = client.admin().indices().stats(request);
 9         IndicesStatsResponse response = responseFuture.get();
10         System.out.println(response);
11//       System.out.println(result);
12      } catch (Throwable e) {
13         e.printStackTrace();
14      } finally {
15         EsClient.close(client);
16      }
17   }

其返回的结果:

1{
 2  "_shards" : {
 3    "total" : 172,
 4    "successful" : 86,
 5    "failed" : 0
 6  },
 7  "_all" : {
 8    "primaries" : {
 9      "docs" : {
10        "count" : 4166,
11        "deleted" : 0
12      },
13      "store" : {
14        "size_in_bytes" : 929840
15      },
16      // ... 省略部分选项
17    },
18    "total" : {
19      "docs" : {
20        "count" : 4166,
21        "deleted" : 0
22      },
23      "store" : {
24        "size_in_bytes" : 929840
25      },
26      // ... 省略部分选项
27    }
28  },
29  "indices" : {
30    "aggregations_index04" : {
31      "uuid" : "2_6WutahTHa6iK52E7CwZQ",
32      "primaries" : {
33        // ... 省略部分选项
34     },
35      "total" : {
36        // ... 省略部分选项
37      }
38    },
39    "alias_demo" : {
40      "uuid" : "EltFD6Y6TA-lpfntx00naw",
41      "primaries" : {
42
43      },
44      "total" : {
45
46      }
47
48    } // 省略其他索引
49  }
50}


本文详细介绍了Index Stats API的使用,特别在结合源码的基础上给出该API响应结果中各个字段含义的解读,包含docs、store、indexing、get、search、merges、refresh、flush、warmer、query_cache、fielddata、completion、segments、translog、request_cache、recovery。


相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
|
4月前
|
人工智能 监控 Cloud Native
深度剖析电商API监控与报警:守护电商系统稳定的核心策略
电商API监控与报警是保障电商业务稳定运行的关键工具。文章从重要性、关键指标(如响应时间、成功率、错误率等)、技术工具(如日志监控、性能监控、异常检测)及实施步骤等方面详细阐述了如何构建高效的监控体系。通过案例分析,如京东的商品API实战,展示了全链路追踪与智能告警的应用价值。未来,随着AI、自动化和云原生技术的发展,电商API监控将更加智能高效,助力提升用户体验与业务效率。
|
3月前
|
数据采集 监控 安全
拼多多API价格战预警:竞品监控不落人后!
在电商竞争激烈的当下,拼多多凭借低价策略迅速崛起,但也给商家带来定价挑战。本文解析如何利用API技术,构建实时价格预警与竞品监控系统,助力商家在价格战中抢占先机,实现智能调价与策略应对。
290 0
|
3月前
|
存储 数据采集 监控
电商数据分析实战:利用 API 构建商品价格监控系统
在电商运营中,商品价格直接影响转化率和竞争力。本文介绍如何构建一套自动化价格监控系统,覆盖京东、淘宝双平台,实现数据采集、存储、分析与智能告警,助力企业实时掌握价格动态,优化定价策略。
|
4月前
|
监控 供应链 数据库连接
电商API:销量监控与竞品分析利器
电商数据接口API在现代电商运营中至关重要,可实现品牌价格、销量、评论等数据监控,优化销售策略。接入主流平台如淘宝、天猫、京东等API,或使用RPA技术取数,保障数据安全与效率。通过数据库连接、ERP直连等方式整合分析数据,监控竞品与价格,掌握市场动态。同时,注重数据安全性、技术支持及成本效益,助力企业在竞争中脱颖而出,提升业务效率与竞争力。
139 0
|
10月前
|
存储 人工智能 API
(Elasticsearch)使用阿里云 infererence API 及 semantic text 进行向量搜索
本文展示了如何使用阿里云 infererence API 及 semantic text 进行向量搜索。
377 8
|
11月前
|
监控 API 索引
Elasticsearch集群使用 _cluster/health API
Elasticsearch集群使用 _cluster/health API
381 2
|
11月前
|
Unix API 索引
Elasticsearch集群使用 _cat/health API
Elasticsearch集群使用 _cat/health API
182 1
|
2月前
|
JSON API 数据安全/隐私保护
深度分析淘宝卖家订单详情API接口,用json返回数据
淘宝卖家订单详情API(taobao.trade.fullinfo.get)是淘宝开放平台提供的重要接口,用于获取单个订单的完整信息,包括订单状态、买家信息、商品明细、支付与物流信息等,支撑订单管理、ERP对接及售后处理。需通过appkey、appsecret和session认证,并遵守调用频率与数据权限限制。本文详解其使用方法并附Python调用示例。
|
22天前
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。

热门文章

最新文章