当前位置: 首页 > 知识库问答 >
问题:

解析类型[date]的字段[datefield]失败

卫华奥
2023-03-14

我试图索引很多记录,但当索引publish_up字段时,我面临一些麻烦。默认情况下,我将该字段映射为日期和格式,但我得到了这个错误:

错误:400{“Error”:{“root_cause”:[{“type”:“mapper_parsing_exception”,“reason”:“未能解析[date]“}]类型的字段[publish_up],“type”:“mapper_parsing_exception”,“reason”:“未能解析[date]类型的字段[publish_up],”,“原因”:{“类型”:“非法参数”\u异常”,“原因”:“无效格式:\“2015-02-11 00:00:00\”在\“00:00:00\”}处格式错误,状态:400}

以下是我配置索引的方式:

$params = [
    'index' => 'attachments',
    'body' => [
        'settings' => [ 
            'number_of_shards' => 1,
            'analysis' => [ 
                'analyzer' => [
                    'custom_analizer_texto_sub' => [
                        'type' => 'custom',
                        'tokenizer' => 'keyword',
                        'filter' => ['lowercase']
                    ]
                ]
            ]
        ],
        'mappings' => [
            'article' => [
                '_source' => [
                    'enabled' => true
                ],
                'properties' => [
                    'iddoc' => [ 'type' => 'integer'],
                    'publish_up' => [ 'type' => 'date'],//, 'format' => 'YYYY-mm-dd HH:mm:ss'], //Y/m/d H:i:s
                    'textofull' => [ 'type' => 'keyword']
                ]
            ]
        ]
    ]
];
$response = $client->indices()->create($params);

和索引代码(这里我得到的错误):

    $params = [
        'index' => 'attachments',
        'type' => 'documentos',
        'id' => $datos->id,
        'body' => [
            'iddoc' => $datos->id,
            'publish_up' => $datos->publish_up,
            'textofull' => $datos->fulltext
        ]
    ];
    $response = $client->index($params);

注意:$datos-


共有2个答案

罗学林
2023-03-14

导致此错误的其他几个原因:

  • Elasticsearch自动映射了一些字段,比如“2021-10-09”,将该字段设置为日期,然后它遇到了一个无效日期的”。解决方案是将其输入null,或者尝试https://stackoverflow.com/a/15950434/733092.
  • 您试图发布从MongoDB复制的“JSON”文档,但实际上它是Mongo的扩展JSON格式,它将日期表示为{“$date”:“2021-10-08T21:46:10.840Z”}。在这种情况下,只需卸下包装器并将其另存为“2021-10-08T21:46:10.840Z”
易元青
2023-03-14

由于日期格式不是标准ISO8601(缺少日期和时间之间的T),因此需要在映射中添加格式。您确实这样做了,但模式是错误的,因为您使用了多年的YYYY,而不是YYYYmm而不是mm。试着这样做:

                'publish_up' => [ 'type' => 'date', 'format' => 'yyyy-MM-dd HH:mm:ss'],
                                                                   ^  ^
                                                                   |  |
                                                               change these
 类似资料:
  • 本文向大家介绍Django ORM 自定义 char 类型字段解析,包括了Django ORM 自定义 char 类型字段解析的使用技巧和注意事项,需要的朋友参考一下 用 CharField 定义的字段在数据库中存放为 verchar 类型 自定义 char 类型字段需要下面的代码: models.py: 执行命令更新到数据库 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐

  • 我正在尝试使用Python将geojson文件索引到elasticsearch(7.6.2版)中。 这是我在elasticsearch中定义的映射。 geojson文件如下所示: 然而,当我将文件写入Elasticsearch时,灵感来自以下链接: 如何在elasticsearch索引Geojson文件? 我有这个错误: {'type':'mapper_parsing_exception','re

  • 问题内容: 我有一个愚蠢的问题。 我有这行代码,但是我不明白为什么这个日期无法用这种格式解析。 问题答案: 如果您的系统使用英语以外的语言环境,则需要使用以下构造函数: 如果这不是问题,则应使用相同的格式化程序格式化日期,然后将输出与输入字符串进行比较。

  • 本文档包含了Django提供的全部模型字段的字段选项 和 字段类型的API参考。 请看: 如果内建的字段不能满足你的需要,你可以尝试包含对特定国家和文化有帮助的配套代码的 django-localflavor。当然,你也可以很容易的编写你自定义的字段。 注意 严格意义上来讲, Model 是定义在django.db.models.fields里面,但为了使用方便,它们被导入到 django.db.

  • 主要内容:Oracle DATE数据类型简介,Oracle DATE数据类型示例在本教程中将学习Oracle 数据类型以及如何有效地处理日期和时间值。 Oracle DATE数据类型简介 数据类型允许以一秒的精度存储包括日期和时间的时间点值。 数据类型存储年份(包括世纪),月份,日期,小时数,分钟数和秒数。 它的范围从公元前4712年1月1日到公元9999年12月31日(共同时代)。 默认情况下,如果未明确使用BCE,则Oracle使用CE日期条目。 Oracle数据库有其自

  • ECMAScript 中的Date 类型是在早期Java 中的java.util.Date 类基础上构建的。为此,Date类型使用自UTC(Coordinated Universal Time,国际协调时间)1970 年1 月1 日午夜(零时)开始经过的毫秒数来保存日期。在使用这种数据存储格式的条件下,Date 类型保存的日期能够精确到1970 年1月1 日之前或之后的285 616 年。 要创建