Elasticsearch更改字段日期格式

时间:2014-07-12 16:54:42

标签: elasticsearch

当我创建索引并输入一段时间之前,我在映射中指定了字段的日期格式:

{"type": "date","format" : "dd/MM/yyyy HH:mm:ss"}

有没有办法改变字段的格式,知道现在我的索引中有超过6000个文档索引?我希望格式为:

{"type": "date","format" : "dd-MM-yyyy HH:mm:ss"}

3 个答案:

答案 0 :(得分:2)

您可以使用PUT映射API更新现有日期字段的格式映射:

PUT twitter/_mapping/user 
{
  "properties": {
    "myDate": {
      "format": "dd-MM-yyyy HH:mm:ss"
    }
  }
}

format 是可在现有字段上更新而不会丢失数据的少数映射之一

https://www.elastic.co/guide/en/elasticsearch/reference/2.0/mapping-date-format.html

答案 1 :(得分:1)

将文档编入索引到Elasticsearch后,无法更改字段映射。您可以添加新字段,但不能更改现有字段。

您可以使用新映射创建新索引,然后将所有数据重新索引到其中。然后,您可以删除旧索引并创建一个新的索引别名,旧名称指向新索引。

在Elasticsearch博客中更改映射时,有一些策略可以最大限度地减少停机时间:http://www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/

总的来说,我强烈建议使用索引别名 - 它们提供了高水平的抽象和灵活性,而不是直接在应用程序中使用索引名称。非常适合您想要对基础索引进行更改的情况:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-aliases.html

答案 2 :(得分:1)

对于弹性版本<7.0,其中不建议使用映射类型

您可以使用类似的东西

PUT inf/_mapping/_doc 
{
  "properties": {
    "ChargeDate": {
      "type":"date",
      "format": "dd-MM-yyyy HH:mm:ss"
    }
  }
}

其中inf是您的index and _doc是映射类型(v> 7.0)中已弃用

PUT inf
{
  "mappings": {
    "_doc": {
      "properties": {
        "ChargeDate": {
         "type":"date",
      "format": "dd-MM-yyyy HH:mm:ss"
        }
      }
    }
  }
}