【问题标题】:Elasticsearch, Mapping, Date Mapping IssueElasticsearch、映射、日期映射问题
【发布时间】:2021-04-13 09:16:27
【问题描述】:

我在使用 Date 字段类型的 Elasticsearch 时有一种奇怪的体验。我已经尝试了大约 7-10 种不同类型的格式,单数和多数,并逐字查看并遵循当前版本的 Elasticsearch 文档,但我仍然遇到同样的错误。这是当前的sn-p:

"<REDACTED>": {"type": "date", "format": "date_optional_time||strict_date_optional_time||yyyy-MM-dd'T'HH:mm:ss||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd HH:mm:ss aa||yyyy-MM-dd HH:mm:ss||M/dd/yyyy HH:mm:ss aa||MM/dd/yyyy HH:mm:ss||MM/dd/yyyy HH:mm:ss aa||yyyy-MM-dd||epoch_millis"}

第四种格式: yyyy-MM-dd HH:mm:ss ,与我当前的数据格式匹配,根据我反复收到的错误消息:

错误:elasticsearch.exceptions.RequestError: RequestError(400, 'mapper_parsing_exception', "无法解析文档中类型为 [date] 的字段 [],id ' ...字段值预览:'2021-03-27 22:46:08'")

任何人都可以提供任何建议吗?不胜感激^___^

【问题讨论】:

    标签: python python-3.x elasticsearch


    【解决方案1】:

    Elasticsearch 日期格式遵循不支持 aaDateTimeFormatter spec — 只有一个 a 来表示 am/pm。

    从映射中删除双 as:

    PUT my-index
    {
      "mappings": {
        "properties": {
          "your_date_field": {
            "type": "date",
            "format": "date_optional_time||strict_date_optional_time||yyyy-MM-dd'T'HH:mm:ss||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd HH:mm:ss a||yyyy-MM-dd HH:mm:ss||M/dd/yyyy HH:mm:ss a||MM/dd/yyyy HH:mm:ss||MM/dd/yyyy HH:mm:ss a||yyyy-MM-dd||epoch_millis"
          }
        }
      }
    }
    

    索引应该可以正常工作:

    POST my-index/_doc
    {
      "your_date_field": "2021-03-27 22:46:08"
    }
    

    【讨论】:

      【解决方案2】:

      我发现了这个问题。 python 代码循环遍历前一个作为检查,而不是用新的日期戳格式完全替换索引。一旦我通过 DELETE 删除了旧索引的错误索引,代码就按预期工作了。

      Joe Sorocin 对 aa 的看法也是正确的。 Joda格式支持,但只作为一个a,两个“a”不是必须的,也不是正确的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-30
        • 1970-01-01
        • 2012-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多