环境说明:ES 6.6及以上版本
Elastic Stack在 6.6 版中,发布了两个强大的功能:索引生命周期管理 (ILM) 和冻结索引
1、如何冻结 Elasticsearch 索引?
# 1、准备数据
POST /sampledata/_doc
{
"name":"Jane",
"lastname":"Doe"
}
POST /sampledata/_doc
{
"name":"John",
"lastname":"Doe"
}
# 2、合并碎片数据
POST /sampledata/_forcemerge?max_num_segments=1
# 3、冻结索引
POST /sampledata/_freeze
2、如何在kibana的Discover 中 搜索 已冻结索引的数据?
管理->Kibana->高级设置:将 search:includeFrozen 选项开启,并保存配置
3、如何用DSL搜索冻结索引?
通过向请求中添加 ignore_throttled=false
GET /sampledata/_search?ignore_throttled=false
{
"query": {
"match": {
"name": "jane"
}
}
}
冻结的指数可能会慢一些,但可以用非常有效的方式进行预过滤。
还建议将请求参数 pre_filter_shard_size 设置为1。
GET /sampledata/_search?ignore_throttled=false&pre_filter_shard_size=1
{
"query": {
"match": {
"name": "jane"
}
}
}
4、如何向 已冻结的 ES索引中 写入数据?
# 1、先解冻已冻结的索引
POST /sampledata/_unfreeze
# 2、再写入数据
POST /sampledata/_doc
{
"name":"Janie",
"lastname":"Doe"
}
# 3、检索刚插入的数据
GET /sampledata/_search
{
"query": {
"match": {
"name": "janie"
}
}
}
5、附录
# 查询冻结索引的查询情况
GET _cat/thread_pool/search_throttled?v&h=node_name,name,active,rejected,queue,completed&s=node_name
6、参考文档
6-1、冻结索引介绍:https://www.elastic.co/cn/blog/creating-frozen-indices-with-the-elasticsearch-freeze-index-api
6-2、冻结索引API:https://www.elastic.co/guide/en/elasticsearch/reference/6.6/freeze-index-api.html