zoukankan      html  css  js  c++  java
  • Elasticsearch rollover index滚动索引

    滚动索引一般可以与索引模板结合使用,实现按一定条件自动创建索引。

    1.当现有索引被认为太大或太旧时,滚动索引API会将别名滚动到新的索引。

    PUT /logs-000001 
    {
      "aliases": {
        "logs_write": {}
      }
    }
    
    # Add > 1000 documents to logs-000001
    
    POST /logs_write/_rollover 
    {
      "conditions": {
        "max_age":   "7d",
        "max_docs":  1000,
        "max_size":  "5gb"
      }
    }

    创建索引 logs-0000001 别名为 logs_write.
    如果 logs_write 指向的索引是在7天以前创建的,或者包含1000个以上的文档,则会创建 logs-000002索引,并更新logs_write别名以指向logs-000002.

    返回值
    {
      "acknowledged": true,
      "shards_acknowledged": true,
      "old_index": "logs-000001",
      "new_index": "logs-000002",
      "rolled_over": true,
      "dry_run": false,
      "conditions": {
        "[max_age: 7d]": false,
        "[max_docs: 1000]": true
      }
    }

    2.如果现有索引的名称以 - 和数字结尾。 logs-000001 - 然后新索引的名称将遵循相同的模式,增加数字(logs-000002)。 无论旧索引名称如何,编号为零填充长度为6。

    如果旧名称与此模式不匹配,则必须按照如下所示,指定新索引的名称:

    POST /my_alias/_rollover/my_new_index_name
    {
      "conditions": {
        "max_age":   "7d",
        "max_docs":  1000,
        "max_size": "5gb"
      }
    }

    3.使用日期计算: 根据索引滚动的日期来命名滚动索引是有用的技术,例如  logstash-2016.02.03.。 滚动API支持日期,但要求索引名称以一个破折号后跟一个数字,例如 logstash-2016.02.03-1,每次索引滚动时都会增加。 例如

    # PUT /<logs-{now/d}-1> with URI encoding:
    PUT /%3Clogs-%7Bnow%2Fd%7D-1%3E 
    {
      "aliases": {
        "logs_write": {}
      }
    }
    
    PUT logs_write/_doc/1
    {
      "message": "a dummy log"
    }
    
    POST logs_write/_refresh
    
    # Wait for a day to pass
    
    POST /logs_write/_rollover 
    {
      "conditions": {
        "max_docs":   "1"
      }
    }

    4.索引名称对日期计算的支持:

    日期计算的格式

    <static_name{date_math_expr{date_format|time_zone}}>

    上述的说明 : 

    位置
    说明
    static_name 是名称的 static text( 静态文本)部分
    date_math_expr 是动态计算日期的动态 date math 表达式
    date_format 是计算日期应呈现的可选格式。默认是 YYYY.MM.dd
    time_zone 是可选的时区。默认为 utc 。

     必须将 date math 索引名称表达式包含在尖括号中,并且所有的特殊字符都应进行 URI 编码。例如 :

    # GET /<logstash-{now/d}>/_search
    GET /%3Clogstash-%7Bnow%2Fd%7D%3E/_search
    {
      "query" : {
        "match": {
          "test": "data"
        }
      }
    }

    用于 date 舍入的特殊字符必须按照如下 URI 编码 :

    <

    %3C

    >

    %3E

    /

    %2F

    {

    %7B

    }

    %7D

    |

    %7C

    +

    %2B

    :

    %3A

    ,

    %2C

    以下示例显示了不同形式索引表达式和它们解析的 final index names(最终索引名称),给定的当前时间是 2024 年 月 22 日 utc

    ExpressionResolves to

    <logstash-{now/d}>

    logstash-2024.03.22

    <logstash-{now/M}>

    logstash-2024.03.01

    <logstash-{now/M{YYYY.MM}}>

    logstash-2024.03

    <logstash-{now/M-1M{YYYY.MM}}>

    logstash-2024.02

    <logstash-{now/d{YYYY.MM.dd|+12:00}}>

    logstash-2024.03.23

    如果索引中需要使用{}需要进行转义处理

    <elastic\{ON\}-{now/M}> resolves to elastic{ON}-2024.03.01

    5.滚动API支持dry_run模式,可以在不执行实际滚动的情况下检查请求条件:

    PUT /logs-000001
    {
      "aliases": {
        "logs_write": {}
      }
    }
    
    POST /logs_write/_rollover?dry_run
    {
      "conditions" : {
        "max_age": "7d",
        "max_docs": 1000,
        "max_size": "5gb"
      }
    }
  • 相关阅读:
    在Ubuntu上安装Mono
    CSS 外边距(margin)重叠及防止方法
    如何通过 iframe 共享 jQuery $.data?
    给ajax表单提交数据前面加上实体名称
    发布web应用程序是出现unsafe code
    ASP.NET MVC 基于页面的权限管理
    jquery旋转图片
    artTemplate子模板include
    JS调试必备的5个debug技巧_javascript技巧
    jQuery中position()与offset()区别
  • 原文地址:https://www.cnblogs.com/libin2015/p/10678342.html
Copyright © 2011-2022 走看看