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"
      }
    }
  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/libin2015/p/10678342.html
Copyright © 2011-2022 走看看