首页 文章

将格式为“dd-MM-yyyy HH:mm:ss”的日期字段编入ElasticSearch 2.2.1

提问于
浏览
1

有没有人能够将格式为“dd-MM-yyyy HH:mm:ss”的日期字段索引到ElasticSearch 2.2.1中?

我的映射如下:

"_updated_at": { "type": "date", "format": "Y-MM-d' 'H:m:ss" }

当我尝试索引时,我收到此错误:

java.lang.RuntimeException: MapperParsingException[failed to parse [doc._created_at]]; nested: IllegalArgumentException[Invalid format: "2015-10-03 13:56:21" is malformed at " 13:56:21"];

这看起来很疯狂,因为上述日期格式很常见 .

有没有解决方法(除了用'T'代替空间)?

3 回答

  • 0

    请更新您的映射到

    “_updated_at”:{“type”:“date”,“format”:“dd-MM-yyyy HH:mm:ss”}

    同时将日期传递给ES时,请确保使用“dd-MM-yyyy HH:mm:ss”作为日期格式

  • 0

    我认为除了 _updated_at 之外,您还必须为 _created_at 执行相同的映射:

    "_created_at": {
              "type": "date",
              "format": "Y-MM-d' 'H:m:ss"
    }
    
  • 1

    我已经解决了这个问题 . 我不得不使用_default映射 - 这确保我的日期字段(_created_at,_updated_at和_deleted_at)设置为正确的格式 . 最初我只设置了一种类型 .

    这是我更正的映射:

    {
      "mappings": {
        "_default": {
          "properties": {
            "doc": {
              "properties": {
                "_created_at": {
                  "type": "date",
                  "format": "Y-MM-d' 'H:m:ss"
                },
                "_deleted_at": {
                  "type": "date",
                  "format": "Y-MM-d' 'H:m:ss"
                },
                "_updated_at": {
                  "type": "date",
                  "format": "Y-MM-d' 'H:m:ss"
                }
              }
            }
          }
        }
      }
    }
    

相关问题