gpt4 book ai didi

php - Elasticsearch和Laravel Scout-Elasticsearch-Driver时间戳格式错误

转载 作者:行者123 更新时间:2023-12-03 00:52:19 32 4
gpt4 key购买 nike

我已经成功配置了ES和babenkoivan / scout-elasticsearch-driver,但是在向数据库添加新条目时遇到此错误:

{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"failed to parse [updated_at.raw]"}],"type":"mapper_parsing_exception","reason":"failed to parse [updated_at.raw]","caused_by":{"type":"illegal_argument_exception","reason":"Invalid format: \"2018-07-13 07:52:02\" is malformed at \" 07:52:02\""}},"status":400}

我已经在映射中设置了这种格式,根据ES文档,这种格式应该可以工作:
protected $mapping = [
'properties' => [
'created_at' => [
'type' => 'date',
'format' => 'yyyy-MM-DD HH:mm:ss',
'fields' => [
'raw' => [
'type' => 'date',
'index' => 'not_analyzed'
]
]
],
'updated_at' => [
'type' => 'date',
'format' => 'yyyy-MM-DD HH:mm:ss',
'fields' => [
'raw' => [
'type' => 'date',
'index' => 'not_analyzed'
]
]
]
]
];

https://www.elastic.co/guide/en/elasticsearch/reference/current/date.html#multiple-date-formats

我在这里想念什么吗?

最佳答案

在映射中,您为yyyy-MM-DD HH:mm:sscreated_at定义了自定义日期格式(updated_at)。相反,raw字段也是日期类型,但使用默认格式(according the doc是date_optional_time,表示yyyy-MM-DD'T'HH:mm:ss)。

这意味着前者期望使用2018-07-13 07:52:02,而后者期望使用2018-07-13T07:52:02,因此您的索引无法避免破坏两者之一。

现在,multi-fields的使用旨在以不同的方式对值建立索引,但是您要做的是创建一个新的字段,其原始值与基本值的属性基本相同(它们都是日期类型,但格式不一致) , 当然)。

因此,我认为您可以选择:

  • 如果您对raw没有任何特定用途,则可以将其从映射中删除。排序和匹配与基本字段配合良好。
    "created_at": {"type": "date", "format": "yyyy-MM-DD HH:mm:ss"}
  • 如果您需要保留原始字符串格式(如“raw”可能会建议),则可以使用关键字类型
    "created_at": {"type": "date", "format": "yyyy-MM-DD HH:mm:ss", "fields": {"raw": {"type": "keyword"}}}
  • 如果您确实需要原始字段,则必须指定一种与另一种格式一致的格式:
    "created_at": {"type": "date", "format": "yyyy-MM-DD HH:mm:ss", "fields": {"raw": {"type": "date", "format": "yyyy-MM-DD HH:mm:ss"}}}
  • 关于php - Elasticsearch和Laravel Scout-Elasticsearch-Driver时间戳格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51320287/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com