gpt4 book ai didi

arrays - 防止ElasticSearch中数组内的对象的非法参数异常

转载 作者:行者123 更新时间:2023-12-03 02:14:05 30 4
gpt4 key购买 nike

我尝试将JSON对象导入ElasticSearch DB。
该修复程序应防止出现以下错误:

"type":"illegal_argument_exception","reason":"mapper [state.config.assertions.target] cannot be changed from type [text] to [long]"},"status":400
导致问题的对象数组如下所示:
"assertions": [
{
"operator": "lessThan",
"type": "responseTime",
"target": 3000
},
{
"operator": "is",
"type": "statusCode",
"target": 200
},
{
"operator": "is",
"property": "content-type",
"type": "header",
"target": "text/html"
}
]
该映射在两个对象之后期望类型为“long”,并且由于它与第三个对象一起收到的“文本”而引发错误。
使对象“嵌套”将导致相同的错误:
      "assertions": {
"type": "nested"
}
此解决方案可以消除错误,但仅能解决问题,而不能避免问题。
"assertions": {
"properties": {
"operator": {
"type": "keyword"
},
"type": {
"type": "keyword"
},
"target": {
"type": "keyword"
}
}
}
映射应保持启用状态以进行查询。
问题在于数组中的对象具有相同键的意外值类型。
如何设置用于映射的参数以接受超出预期的其他值类型?
如何防止这些错误而不是加以解决?

最佳答案

您无法通过elasticsearch映射来防止这种情况,elasticsearch中的每个字段只能包含一个data type,并且如果您尝试存储与映射中的数据类型不匹配的任何内容(如您所获得的那个),则会给您一个异常。
您没有一个字段可以存储一个文档的numeric值和其他文档的keyword值。
如果您有一个字段可以具有不同的数据类型作为值,例如数字, bool(boolean) 值和单词,则应像以前一样将此字段映射为keyword,如果在索引之前未为该字段创建映射,elasticsearch将第一次接收到带有字段的文档时创建映射,并将使用该值创建映射。
您至少可以对文档的索引部分进行操作,就是将ignore_malformed选项设置为true,这样,如果您对某个字段有映射异常(exception),则只会拒绝该字段,而不是整个文档。

关于arrays - 防止ElasticSearch中数组内的对象的非法参数异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63957235/

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