gpt4 book ai didi

json - 索引复杂数组结构

转载 作者:行者123 更新时间:2023-12-02 23:38:33 24 4
gpt4 key购买 nike

我在 flex 搜索中需要索引一些json(如下):

{
"array": [
"item1",
{
"name": "item2"
}
]
}

当我尝试索引这种类型的json结构时,出现错误:
{
"error": "MapperParsingException[failed to parse [array]]; nested: ElasticsearchIllegalArgumentException[unknown property [name]]; ",
"status": 400
}

现在我知道Elasticsearch变得混乱了,因为数组包含项1的字符串类型,然后包含项2的对象。

我的问题是,如何定义映射以处理此类数据?

最佳答案

唯一可行的方法是define your index mapping so that the array field is not enabled ,因此使其不可搜索(Elasticsearch避免解析该字段)。

curl -XPUT localhost:9200/your-index -d '{
"mappings": {
"your-type" : {
"properties" : {
"array" : {
"type" : "object",
"enabled" : false
}
}
}
}
}'

您必须执行此操作,因为Elasticsearch将根据所看到的内容动态映射类型(如果您不告诉它映射)。在您的示例中,第一个元素将是字符串,因此它将 array映射到字符串。当它撞击物体时,它不知道该怎么办,因此必须停止。

这并不是听起来没什么用,因为您仍然可以从文档的 array(假定已存储,默认情况下)中检索 _source的值。但是,这确实意味着在Elasticsearch中无法搜索 array中的信息。您可以通过搜索或获取请求来获取 _source

正如安德烈(Andrei)所评论的那样,您可以从拥有更清洁的物体中受益,但是有时候这只是它的实际用途。

关于json - 索引复杂数组结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26988317/

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