Elasticsearch 消息过期(TTL)

Graylog2 可以使用 ES 作为 message 的 index,通过 ES 的 TTL 功能,可以定期的删除过期的 log 信息,有点类似 logrotate。默认情况下,_ttl 是关闭的,
# curl -XGET http://111.111.152.147:9200/graylog2/message/_mapping?pretty=true
{
  "message" : {
    "dynamic_templates" : [ {
      "store_generic" : {
        "mapping" : {
          "index" : "not_analyzed"
        },
        "match" : "*"
      }
    } ],
    "properties" : {
      "created_at" : {
        "type" : "double",
        "ignore_malformed" : false
      },
      "facility" : {
        "type" : "string",
        "index" : "not_analyzed"
      },
      "full_message" : {
        "type" : "string",
        "analyzer" : "whitespace"
      },
      "host" : {
        "type" : "string",
        "index" : "not_analyzed"
      },
      "level" : {
        "type" : "long",
        "ignore_malformed" : false
      },
      "line" : {
        "type" : "long",
        "ignore_malformed" : false
      },
      "message" : {
        "type" : "string",
        "analyzer" : "whitespace"
      }
    }
  }
}

插入 _ttl:
# curl -PUT http://111.111.152.147:9200/graylog2/message/_mapping -d 'e
{
"message" : {
"_ttl" : {"enable" : true, "default" : "10d"},
    "dynamic_templates" : [ {
      "store_generic" : {
        "mapping" : {
          "index" : "not_analyzed"
        },
        "match" : "*"
      }
    } ],
    "properties" : {
      "created_at" : {
        "type" : "double",
        "ignore_malformed" : false
      },
      "facility" : {
        "type" : "string",
        "index" : "not_analyzed"
      },
      "full_message" : {
        "type" : "string",
        "analyzer" : "whitespace"
      },
      "host" : {
        "type" : "string",
        "index" : "not_analyzed"
      },
      "level" : {
        "type" : "long",
        "ignore_malformed" : false
      },
      "line" : {
        "type" : "long",
        "ignore_malformed" : false
      },
      "message" : {
        "type" : "string",
        "analyzer" : "whitespace"
      }
    }
  }
}'

查看:
# curl -XGET http://111.111.152.147:9200/graylog2/message/_mapping?pretty=true
{
  "message" : {
    "dynamic_templates" : [ {
      "store_generic" : {
        "mapping" : {
          "index" : "not_analyzed"
        },
        "match" : "*"
      }
    } ],
    "_ttl" : {
      "default" : 864000000
    },
    "properties" : {
      "created_at" : {
        "type" : "double",
        "ignore_malformed" : false
      },
      "facility" : {
        "type" : "string",
        "index" : "not_analyzed"
      },
      "full_message" : {
        "type" : "string",
        "analyzer" : "whitespace"
      },
      "host" : {
        "type" : "string",
        "index" : "not_analyzed"
      },
      "level" : {
        "type" : "long",
        "ignore_malformed" : false
      },
      "line" : {
        "type" : "long",
        "ignore_malformed" : false
      },
      "message" : {
        "type" : "string",
        "analyzer" : "whitespace"
      }
    }
  }
}

ref:
http://www.elasticsearch.org/guide/reference/mapping/ttl-field.html

  • test

    請教一個問題,假若ES一直是將數據存放在索引A而小弟在ES中新增了索引B後,如何讓ES將數據由索引A改為索引B?萬分感激。

  • Pingback: :wq! 2013 - IT牛人博客聚合()