gpt4 book ai didi

名称为彼此子字符串的 Elasticsearch 键

转载 作者:行者123 更新时间:2023-12-02 22:47:51 33 4
gpt4 key购买 nike

我已经用 Elasticsearch 玩了大约一天了,所以我非常陌生。我正在尝试 POST/import 一个简单的文件:

{
"compression" : "none",
"compression.level" : "0"
}

我收到以下错误:
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "object mapping for [compression] tried to parse field [compression] as object, but found a concrete value"
}
],
"type": "mapper_parsing_exception",
"reason": "object mapping for [compression] tried to parse field [compression] as object, but found a concrete value"
},
"status": 400
}

据我了解,Elasticsearch 会首先看到 "compression" : "none"并创建一个名为 compression 的 key 字符串类型?然后当它看到 "compression.level" : "0" ,它认为这是一个关键的“压缩”与..一个对象值 .level" : "0" ?或者……我真的不知道。

我怎样才能让它按预期工作?或者为什么它不像我预期的那样工作?

谢谢!

最佳答案

compressionobject 类型并且您正在尝试传递 string值,不能直接传递。下面的错误消息正确解释了它。

object mapping for [compression] tried to parse field [compression] as object, but found a concrete value



一个对象类型可以有多个 sub-fields , 用 . 表示您可以将单个值传递给这些子字段。因此,在您的情况下,您可以传递 compression.level 的值.

请引用官方 ES 文档以获得更多解释和示例。 https://www.elastic.co/guide/en/elasticsearch/reference/current/object.html

看起来您正在使用动态映射,在这种情况下,当 Elasticsearch 看到带有 . 的字段名称时, 那么如果有对应的字段同名但没有 . ,然后它会自动将其转换为 object类型,这发生在你的情况下。

如果您想要一个值的 key ,请告诉我您的要求 none ,那么您应该创建一个类似的文档:
{
"compression.stategy" : "none", // notice its a another sub-field.
"compression.level" : "0"
}

您可以通过点击 _mapping 查看所有子字段 https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-mapping.html

根据您的理解(如果您使用的是动态映射),它有点不同,ES 将首先看到 "compression" : "none"然后尝试将其映射到文本字段,但随后它会看到另一个字段 compression.level并且因为它使用 .在字段名称中,和 compression已经存在,因此开始处理 compression作为对象类型。

关于名称为彼此子字符串的 Elasticsearch 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56870890/

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