当我创建索引并输入一段时间之前,我在映射中指定了字段的日期格式:
{"type": "date","format" : "dd/MM/yyyy HH:mm:ss"}
有没有办法改变字段的格式,知道现在我的索引中有超过6000个文档索引?我希望格式为:
{"type": "date","format" : "dd-MM-yyyy HH:mm:ss"}
答案 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"
}
}
}
}
}