ES已冻结索引查询不到,如何解决?

环境说明: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 选项开启,并保存配置

ES已冻结索引查询不到,如何解决?_第1张图片

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

 

你可能感兴趣的:(ELK,es,kibana,dsl)