如何在Elasticsearch日期名称索引处理器中动态命名索引?

时间:2018-09-10 13:09:56

标签: elasticsearch

我需要使用Elasticseach日期名称索引处理器来使每个日志都转到正确的索引。很简单。

我的问题是我需要使用字段内容来动态命名索引,但是我不知道该怎么做。

下面有我的管道。如您所见,我需要使用一个名为“ deployment”的字段(这是一个现有字段)来命名索引,但是我不知道如何。

PUT _ingest/pipeline/ixmd-date-index
{
  "description": "indexa la entrada de log en el índice correcto según el logdate",
  "processors" : [
    {
      "date_index_name" : {
        "field" : "logdate",
        "index_name_prefix" : "ixmd-{[fields.deployment]}-",
        "date_rounding" : "d",
        "date_formats": ["yyyy-MM-dd HH:mm:ss.SSSS", "ISO8601"]
      }
    }
  ]
}

我尝试了几种格式,例如“ ixmd-%{[fields] [deployment]}-”,“ ixmd- {fields.deployment}-”,...但都无效。

2 个答案:

答案 0 :(得分:0)

尝试使用"index_name_prefix" : "ixmd-%{+yyyy.MM.dd}"

您可以使用日期为数据建立索引。

答案 1 :(得分:0)

我做到了!

正确的管道是:

PUT _ingest/pipeline/ixmd-date-index
{
  "description": "indexa la entrada de log en el índice correcto según el logdate",
  "processors" : [
    {
      "date_index_name" : {
        "field" : "logdate",
        "index_name_prefix" : "ixmd-{{ fields.deployment }}-",
        "date_rounding" : "d",
        "date_formats": ["yyyy-MM-dd HH:mm:ss.SSSS"]
      }
    }
  ]
}

因此访问字段的正确方法是使用{{my_field}}。在我的示例中,它是 {{fields.deployment}} ,因此为我定义索引名称前缀的正确方法是:

"index_name_prefix" : "ixmd-{{ fields.deployment }}-"

然后我将获得名为“ ixmd-server1-2018.09.12”,“ ixmd-server2-2018.09.12”等的索引。