1、索引监控
在Elasticsearch中,系统提供了接口来监控索引的状态,包括索引的统计信息、碎片信息、恢复的状态和分片的信息,利用这些接口可以随时监控系统索引的状态。
1.1、索引统计
索引统计接口提供索引中不同内容的统计数据(其中的大多数统计数据也可以从节点级别范围取得)。
获取所有聚合一级索引的统计数据:
GET http://127.0.0.1:9200/_stats
获取指定索引的统计数据:
GET http:127.0.0.1:9200/index1,index2/_stats
默认情况返回所有统计数据,也可以在URL中指定需要返回的特定统计数据。指定数据如下表:
一些统计数据可以作用在字段粒度上,接收逗号分割的字段列表。默认包含所有字段,如下所示:
- fields :包含在统计数据中的字段列表。用作默认列表,除非提供了更明确的列表。
- completin_fields :包含在完成建议统计数据中的字段列表。
- fielddata_fields :包含在字段数据统计数据中的字段列表。
获取所有索引的混合和刷新统计数据:
GET http:127.0.0.1:9200/_stats/merge,refresh
获取名为secisland索引中类型为type1和type2的文档统计数据:
GET http:127.0.0.1:9200/secisland/_stats/indexing?types=type1,type2
获取分组 group1和group2的搜索统计数据:
GET http:127.0.0.1:9200/_stats/search?groups=group1,group2
返回的统计数据在索引级别发生聚合,生成名为primaries和total的聚合。其中,primaries仅包含主分片的值,total是主分片和从分片的累计值。为了获取分片级别统计数据,需要设置level参数为shards。
注意,当分片在集群中移动的时候,它们的统计数据会被清除,视作它们在其他节点中被创建。另一方面,即使分片“离开”了一个节点,那个节点仍然会保存分片之前的统
计数据。
1.2、索引分片
提供Lucene索引所在的分片信息。可以用来提供分片和索引的更多统计信息,可能是优化信息,删除的“垃圾”数据,等等。
参数包括特定的索引,多个索引或者所有索引的分片请求如下:
GET http://127.0.0.1:9200/secisland/_segments
GET http://127.0.0.1:9200/secisland1,secisland2/_segments
GET http://127.0.0.1:9200/_segments
返回值:
{
...
"3": [
{
"routing": {
"state": "STARTED",
"primary": true,
"node": "TYQmR_6uTgKypASR7lJJHw"
},
"num_committed_segments": 1,
"num_search_segments": 1,
"segments": {
"_8": {
"generation": 8,
"num_docs": 1,
"deleted_docs": 0,
"size_in_bytes": 4243,
"memory_in_bytes": 2589,
"committed": true,
"search": true,
"version": "6.6.1",
"compound": true
}
}
}
],
...
}
1.3、索引恢复
索引恢复接口提供正在进行恢复的索引分片信息。可以报告指定索引或者集群范围的恢复状态。
例如,获取secisland1和secisland2两个索引的恢复信息:
GET http://127.0.0.1:9200/secisland1,secisland2/_recovery
去掉索引名可以查看集群范围的恢复状态:
GET http://127.0.0.1:9200/recovery?pretty&human
选项列表:
- detailed :显示详细的视图。主要用来查看物理索引文件的恢复。默认为false.。
- active_only :显示那些现在正在进行的恢复。默认为false。
1.4、索引分片存储
提供索引分片副本的存储信息。存储信息报告分片副本存在的节点、分片副本版本、指示分片副本最近的状态以及在开启分片索引时遭遇的任何异常。
默认情况下,只列出至少有一项未分配副本的分片的存储信息。
端点包括特定的索引、多个索引或者所有索引的分片:
GET http://127.0.0.1:9200/secisland/_shard_stores
GET http://127.0.0.1:9200/secisland1,secisland2/_shard_stores
GET http://127.0.0.1:9200/shard_stores
列出存储信息的分片范围可以通过status参数进行修改。默认是yellow和red。使用green参数来列出所有指定副本分片的存储信息:
GET http:/127.0.0.l:9200/_shard_stores??
status=green
2、状态管理
2.1、清除缓存
清除缓存接口可以清除所有缓存或者关联一个或更多索引的特定缓存:
POST http://127.0.0.1:9200/secisland/_cache/clear
接口默认清理所有缓存,可以明确设置query、fielddata和request来清理特定缓存。
所有关联特定字段的缓存也可以被清理,通过逗号分隔的相关字段列表来指定fields参数。
2.2、索引刷新
刷新接口可以明确地刷新一个或多个索引,使之前最后一次刷新之后的所有操作被执行。(接近)实时能力取决于使用的搜索引擎。例如,内部的一个请求刷新被调用,但是默认刷新是一个周期性的安排。
POST http://127.0.0.1:9200/secisland/_refresh
刷新接口可以通过一条请求应用到多个索引,或者所有索引:
POST http://127.0.0.1:9200/secisland,elasticsearch/_refresh
POST http://127.0.0.1:9200/_refresh
2.3、索引冲洗
冲洗(flush)接口可以通过接口冲洗一个或多个索引。索引主要通过执行冲洗将数据保存到索引存储并且清除内部事务日志,以此来释放索引的内存空间。默认的,Elasticsearch使用内存启发式算法来自动触发冲洗操作的请求来清理内存:
POST http://127.0.0.1:9200/secisland/_flush
2.4、合并索引
合并接口可以强制合并一个或更多索引。合并分片数量和每个分片保存的Lucene索引。强制合并可以通过合并来减少分片数量。
调用会被阻塞直到合并完成。如果http连接丢失,请求会在后台继续执行,任何新的请求都会被阻塞直到前一个强制合并完成。
POST http://127.0.0.1:9200/secisland/forcemerge
合并接口接受请求参数如下所示:
- max_num_segments :用于合并的分片数量。为了充分合并索引,设置它的值为1。默认简单地检查是否需要执行合并,如果是,执行合并。
- only_expunge_deletes :合并过程是否只删除分片中被删除的文档。在Lucene中,文档不会从分片中删除,只是标记为删除。通过执行分片合并,一个不包含这些被删除的文档的新分片会被创建。这个标识可以只合并拥有删除文档的分片。默认值为false。注意index.merge.policy.expunge_deletes_allowed阈值不会被覆盖。
- flush :强制合并之后是否执行冲洗。默认为true。
合并接口可以通过单次应用到多个索引,或者所有索引:
POST http://127.0.0.1:9200/secisland,elasticsearch/_forcemerge
POST http://127.0.0.1:9200/forcemerge