gpt4 book ai didi

elasticsearch - 我应该使用嵌套对象还是普通字段?

转载 作者:行者123 更新时间:2023-12-02 23:41:32 25 4
gpt4 key购买 nike

我一直在努力使用Elasticsearch,在研究一个单独的问题时,我遇到了this question.。在这里,swatkins问有关查询嵌套对象的问题,响应者指出,对于他的模型,嵌套对象不是必需的。我在这里复制了模型,并进行了一些更改以反射(reflect)我的特定问题:

[{
id:4635,
description:"This is a test description",
author:"John",
author_id:51421,
meta: {
title:"This is a test title for a video",
description:"This is my video description",
url:"/url_of_video"
awesomeness-level: "pretty-awesome"
kung-fu: true
}
},
{
id:4636,
description:"This is a test description 2",
author:"John",
author_id:51421,
meta: {
title:"This is an example title for a video",
description:"This is my video description2",
url:"/url_of_video2"
kung-fu:false
monsters:true
monsters-present: "Dracula, The Mummy"
}
}]

我们的应用程序允许用户定义自定义元数据,因此我们使用嵌套对象表示该数据。乍一看,它看起来类似于swatkins的模型,所以我认为也许我们不应该使用嵌套对象。

最大的区别是每个对象的meta可能有所不同,请注意第二个视频具有专门关于“怪兽电影”的meta,而第一个视频则引用了“令人敬畏的级别”。因此,我应该使用嵌套对象,还是仅将元数据映射为普通字段?如果我们选择后者,则第一个视频的元数据字段会为空吗?真的重要吗?提前致谢!

最佳答案

假设您的示例代表了两个Elasticsearch文档,则看起来不需要将meta设置为嵌套对象。当一个父对象具有多个嵌套对象,并且您的搜索涉及嵌套对象的多个字段时,使用嵌套对象是有意义的。例如,如果您有这样的记录:

{
"name": "apple",
"attributes": [
{
"color": "yellow",
"size": "big"
},
{
"color": "red",
"size": "small"
}
]
}

并且您希望在搜索 color:yellow AND shape:bigcolor:red AND shape:small时找到此记录,但又不想在搜索 color:yellow AND shape:small时返回该记录,因此使 attributes成为嵌套对象是很有意义的。它将允许您独立索引和搜索每个属性,然后获取匹配属性的父对象。

关于elasticsearch - 我应该使用嵌套对象还是普通字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14364262/

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