本文将详细介绍Elasticsearch Index Monitoring监控命令之Index Stats API。
索引状态统计。默认情况下,该API会返回所有类型的统计信息,Indices Stats返回如下类型的统计信息:
1、docs
文档总数量(包含已删除的文档),调用文档删除API后并不会立即将文档物理删除,会保留一段时间,受refreshing the index的影响。其返回示例如下:
"docs" : {
"count" : 1286,
"deleted" : 0
}
2、store
索引存储的总大小,其返回示例如下:
"store" : {
"size_in_bytes" : 459254
}
其返回字段说明如下:
3、indexing
新增、更新、删除索引操作的统计信息,其返回示例如下:
"indexing" : {
"index_total" : 0,
"index_time_in_millis" : 0,
"index_current" : 0,
"index_failed" : 0,
"delete_total" : 0,
"delete_time_in_millis" : 0,
"delete_current" : 0,
"noop_update_total" : 0,
"is_throttled" : false,
"throttle_time_in_millis" : 0
}
其返回字段说明如下:
4、get
get api 统计信息,其返回示例如下:
"get" : {
"total" : 0,
"time_in_millis" : 0,
"exists_total" : 0,
"exists_time_in_millis" : 0,
"missing_total" : 0,
"missing_time_in_millis" : 0,
"current" : 0
}
其返回字段说明如下:
5、search
查询API的统计信息,其返回示例如下:
"search" : {
"open_contexts" : 0,
"query_total" : 0,
"query_time_in_millis" : 0,
"query_current" : 0,
"fetch_total" : 0,
"fetch_time_in_millis" : 0,
"fetch_current" : 0,
"scroll_total" : 0,
"scroll_time_in_millis" : 0,
"scroll_current" : 0,
"suggest_total" : 0,
"suggest_time_in_millis" : 0,
"suggest_current" : 0
},
其返回字段说明如下:
6、merges
合并相关的统计信息,其输出示例如下:
"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" : 104857600
}
其返回字段说明如下:
7、refresh
刷新索引相关的统计。
"refresh" : {
"total" : 15,
"total_time_in_millis" : 0,
"listeners" : 0
}
其返回字段说明如下:
8、flush
刷盘的统计信息。
"flush" : {
"total" : 5,
"periodic" : 0,
"total_time_in_millis" : 0
}
其返回字段说明如下:
9、warmer
索引分片(shard)预热统计信息,分片预热是指为索引创建一个分片节点时,是否对该索引预热(为索引创建一bitSet位图)。其统计示例如下:
"warmer" : {
"current" : 0,
"total" : 5,
"total_time_in_millis" : 0
}
其返回字段说明如下:
10、query_cache
查询缓存统计信息,其示例如下:
"query_cache" : {
"memory_size_in_bytes" : 0,
"total_count" : 0,
"hit_count" : 0,
"miss_count" : 0,
"cache_size" : 0,
"cache_count" : 0,
"evictions" : 0
}
其返回字段说明如下:
11、fielddata
fielddata统计信息,fielddata主要用加快text字段排序与聚合的性能,存储词根与文档的映射关系存储在在内存,在内存中进行排序与聚合。
"fielddata" : {
"memory_size_in_bytes" : 0,
"evictions" : 0
}
其返回字段说明如下:
12、completion
completion(自动填充)相关统计,其输出示例为:
"completion" : {
"size_in_bytes" : 0
},
其返回字段说明如下:
13、segments
检索打开段的内存使用情况。可选地,设置include_segment_file_size=true(默认为false),将输出每个Lucene索引文件的聚合磁盘使用情况,其返回示例如下:
"segments" : {
"count" : 32,
"memory_in_bytes" : 38078,
"terms_memory_in_bytes" : 23838,
"stored_fields_memory_in_bytes" : 9984,
"term_vectors_memory_in_bytes" : 0,
"norms_memory_in_bytes" : 2048,
"points_memory_in_bytes" : 32,
"doc_values_memory_in_bytes" : 2176,
"index_writer_memory_in_bytes" : 0,
"version_map_memory_in_bytes" : 0,
"fixed_bit_set_memory_in_bytes" : 0,
"max_unsafe_auto_id_timestamp" : -1,
"file_sizes" : { }
},
其返回字段说明如下:
14、translog
translog统计信息(有点类似于Innodb的redo日志),其输出示例如下:
"translog" : {
"operations" : 0,
"size_in_bytes" : 1100,
"uncommitted_operations" : 0,
"uncommitted_size_in_bytes" : 1100,
"earliest_last_modified_age" : 0
}
其返回字段说明如下:
15、request_cache
请求缓存的统计信息,其输出示例如下:
"request_cache" : {
"memory_size_in_bytes" : 0,
"evictions" : 0,
"hit_count" : 0,
"miss_count" : 0
},
其返回字段说明如下:
16、recovery
recovery(恢复)相关的统计信息,其输出示例:
"recovery" : {
"current_as_source" : 0,
"current_as_target" : 0,
"throttle_time_in_millis" : 0
}
其返回字段说明如下:
Indices Stats返回的结果是在索引级别的聚合,包含三个维度:primaries(所有主节点进行聚合)、total(所有主节点、副本节点进行聚合)、indices(索引级别)。
下面给出在JAVA中使用Index Stats示例来结束本篇的讲解。
ElasticSearch Index Stats JAVA示例如下:(当前elasticsearch6.4.0 High Rest Client未提供对应API的封装)
public static final void test_Indices_StatsIndex() {
TransportClient client = EsClient.getTransportClient();
try {
IndicesStatsRequest request = new IndicesStatsRequest();
// request.indices("aggregations_index02");
// request.indices("logs_write");
// request.includeSegmentFileSizes(true);
ActionFuture responseFuture = client.admin().indices().stats(request);
IndicesStatsResponse response = responseFuture.get();
System.out.println(response);
// System.out.println(result);
} catch (Throwable e) {
e.printStackTrace();
} finally {
EsClient.close(client);
}
}
其返回的结果:
{
"_shards" : {
"total" : 172,
"successful" : 86,
"failed" : 0
},
"_all" : {
"primaries" : {
"docs" : {
"count" : 4166,
"deleted" : 0
},
"store" : {
"size_in_bytes" : 929840
},
// ... 省略部分选项
},
"total" : {
"docs" : {
"count" : 4166,
"deleted" : 0
},
"store" : {
"size_in_bytes" : 929840
},
// ... 省略部分选项
}
},
"indices" : {
"aggregations_index04" : {
"uuid" : "2_6WutahTHa6iK52E7CwZQ",
"primaries" : {
// ... 省略部分选项
},
"total" : {
// ... 省略部分选项
}
},
"alias_demo" : {
"uuid" : "EltFD6Y6TA-lpfntx00naw",
"primaries" : {
},
"total" : {
}
} // 省略其他索引
}
}
本文详细介绍了Index Stats API的使用,特别在结合源码的基础上给出该API响应结果中各个字段含义的解读,包含docs、store、indexing、get、search、merges、refresh、flush、warmer、query_cache、fielddata、completion、segments、translog、request_cache、recovery。
欢迎加笔者微信号(dingwpmz),加群探讨,笔者优质专栏目录:
1、源码分析RocketMQ专栏(40篇+)
2、源码分析Sentinel专栏(12篇+)
3、源码分析Dubbo专栏(28篇+)
4、源码分析Mybatis专栏
5、源码分析Netty专栏(18篇+)
6、源码分析JUC专栏
7、源码分析Elasticjob专栏
8、Elasticsearch专栏(20篇+)
9、源码分析MyCat专栏