Elasticsearch settings管理

概述

在工作中,我们常常需要对setting做一些微调,这个时候我们应该如何处理?

settings是针对索引库而言修改分片和副本数的。

一个索引库的setting如下

{
  "poc2" : {
    "settings" : {
      "index" : {
        "refresh_interval" : "10s",
        "number_of_shards" : "5",
        "translog" : {
          "flush_threshold_size" : "1gb",
          "sync_interval" : "30s",
          "durability" : "async"
        },
        "provided_name" : "poc2",
        "creation_date" : "1559179132567",
        "number_of_replicas" : "2",
        "uuid" : "DWxdd-uQSLSycMslq_16xQ",
        "version" : {
          "created" : "6050499"
        }
      }
    }
  }
}

number_of_shards 主分
number_of_replicas 副本
refresh_interval 每10秒刷新poc2 索引

默认情况下索引的refresh_interval为1秒,这意味着数据写1秒后就可以被搜索到,每次索引的 refresh 会产生一个新的 lucene 段,这会导致频繁的 segment merge 行为,如果你不需要这么高的搜索实时性,应该降低索引refresh 周期(即你可能想优化索引速度而不是近实时搜索, 可以通过设置 refresh_interval , 降低每个索引的刷新频率)

事务日志操作间隔调整:translog flush

durability: async //异步刷新
sync_interval: 30s //间隔30s异步刷新(设置后无法更改)
flush_threshold_size: 1gb //内容容量到达1gb异步刷新

translog是elasticsearch的事务日志文件,它记录了所有对索引分片的事务操作(add/update/delete),每个分片对应一个translog文件。

translog是用来恢复数据的。Es用“后写”的套路来加快写入速度 — 写入的索引并没有实时落盘到索引文件,而是先双写到内存和translog文件,有三种状态(可搜索 & 未落盘 & 已写日志) 。如果掉电,es重启后还可以把数据从日志文件中读回来。

1、首先把要微调的索引库关闭

#关闭poc2索引库
POST /poc2/_close

2、微调setting

PUT /poc2/_settings?pretty
{
    "index" : {
        "number_of_replicas" : 1
    }
}

3、打开微调后的索引库

#打开poc2的索引
POST /poc2/_open

4、查看修改后的setting

#查看索引
GET /poc2/_settings

 

你可能感兴趣的:(Elasticsearch)