gpt4 book ai didi

arrays - ElasticSearch:嵌套数组与单独类型

转载 作者:行者123 更新时间:2023-12-03 02:07:52 25 4
gpt4 key购买 nike

我将ElasticSearch用作数据存储,并且想知道如何构造数据。来自MySQL,我的自然本能是将所有内容分成不同的类型(“表”),但是我不确定是否可以从中获得任何好处。

例如,我有一篇带有评论的文章,​​我想跟踪单击评论中“喜欢”的用户。我应该只是将用户ID数组保留在文章注释中的嵌套数组中,还是应该将注释移到单独的comment类型中?那么,那些喜欢该评论的用户又该如何呢?

{
"article": {
"properties": {
...
"comments": {
"properties": {
...
"likes": { "type": "string" } // array of UUIDs
}
}
}

从效率的 Angular 来看,在嵌套数组中使用嵌套数组是否存在问题?在将ElasticSearch用作数据存储时,使用嵌套数组/对象或单独的类型更好吗?

最佳答案

这是一个广泛的问题,通常的答案是“取决于情况”。我要说的是,在规划数据的结构时,需要考虑两个主要方面。

一种是您的访问模式-您将需要什么类型的搜索,以及您希望对数据进行什么样的聚合(如果有)。尝试对您的用途进行映射,以确保您可以根据自己的构想实现它。

第二个是更新模式。在某种程度上,这被访问模式所忽略,但是有一些重要的含义值得考虑。例如,如果文章本身变化不大,但可以包含很多注释,则由于无需在每个注释上重新索引文章,因此将注释作为单独的文档(和类型)保存可能会获得更好的性能。 (请记住,在Elasticsearch中更新文档实际上是对其重新编制索引)。

我还建议您阅读http://www.elasticsearch.org/blog/managing-relations-inside-elasticsearch/这篇文章,并熟悉嵌套对象和父子类型之间的区别(当父子的更新模式不同时,后者会更好)。

关于arrays - ElasticSearch:嵌套数组与单独类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23219066/

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