gpt4 book ai didi

elasticsearch - 填充字段时映射器解析异常

转载 作者:行者123 更新时间:2023-12-03 01:32:47 25 4
gpt4 key购买 nike

我正在使用Elasticsearch来存储来自Winston的REST API的所有日志记录。经过测试并通过我的API提出了一些请求之后,我注意到我多次获得了'object mapping for [fields.meta.res.body.x] tried to parse field [x] as object, but found a concrete value'。发生这种情况是因为我并不总是填充字段,这可能导致具有ID的字段或具有包含已填充数据的对象的字段。

例如响应可以是:

{
"_id": "5c6be1ab42cb9db50832469e",
"name": "xyz",
"role": "5c3e003efb6fc0600be0d642"
}

要么
{
"_id": "5c6be1ab42cb9db50832469e",
"name": "xyz",
"role": {
"_id": "5c3e003efb6fc0600be0d642",
"name": "admin"
}
}

有什么方法可以使字段接受两种不同类型的值?如果没有,解决该问题的最佳方法是什么?谢谢!

最佳答案

您不能让object字段(即role)包含具体值(即字符串),反之亦然。您需要决定一个。在您的情况下,似乎总是合理的做法是始终将role指定为一个对象,如果没有值,则将role.name保留为null。如果不是这样:

{
"_id": "5c6be1ab42cb9db50832469e",
"name": "xyz",
"role": "5c3e003efb6fc0600be0d642" <-- this is no good since role is an object
}

用这个:
{
"_id": "5c6be1ab42cb9db50832469e",
"name": "xyz",
"role": {
"_id": "5c3e003efb6fc0600be0d642", <-- specify the id here
"name": null <-- use null here
}
}

并且如果您遇到相反的问题(即尝试将对象放入字符串中),则需要确保 role实际上包含 role._id的值,即代替此值
{
"_id": "5c6be1ab42cb9db50832469e",
"name": "xyz",
"role": {
"_id": "5c3e003efb6fc0600be0d642",
"name": null
}
}

用这个:
{
"_id": "5c6be1ab42cb9db50832469e",
"name": "xyz",
"role": "5c3e003efb6fc0600be0d642" <-- this should be role._id
}

关于elasticsearch - 填充字段时映射器解析异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54765510/

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