elasticsearch,timeline,feed,Performance,elasticsearch,Timeline,Feed" /> elasticsearch,timeline,feed,Performance,elasticsearch,Timeline,Feed" />

Performance 基于弹性搜索时间的feeds模块的最佳实现方法?

Performance 基于弹性搜索时间的feeds模块的最佳实现方法?,performance,elasticsearch,timeline,feed,Performance,elasticsearch,Timeline,Feed,我是弹性搜索的新手,正在寻找最好的解决方案,我可以用它创建一个feed模块,其中包含基于时间的feed以及组和评论 我学的很少,所以我想出了以下的方法 PUT/group { “映射”:{ “groupDetail”:{}, “内容”:{ “_父项”:{ “类型”:“groupDetail” } }, “评论”:{ “_父项”:{ “类型”:“内容” } } } }如果您不经常指定以外的更详细的信息,则很难提出建议。此外,您还没有提到数据的外观。即使在激烈的讨论中,在博客帖子中发表评论也可能是

我是弹性搜索的新手,正在寻找最好的解决方案,我可以用它创建一个feed模块,其中包含基于时间的feed以及组和评论

我学的很少,所以我想出了以下的方法

PUT/group
{
“映射”:{
“groupDetail”:{},
“内容”:{
“_父项”:{
“类型”:“groupDetail”
}
},
“评论”:{
“_父项”:{
“类型”:“内容”
}
}
}

}
如果您不经常指定
以外的更详细的信息
,则很难提出建议。此外,您还没有提到数据的外观。即使在激烈的讨论中,在博客帖子中发表评论也可能是罕见的。论坛帖子中的评论/回复(将产生一个巨大的文档)可能会有很大的不同。我个人会从nested开始,看看它是如何运行的,但我也不知道所有的需求,所以这可能是一个非常错误的答案。

  • 父/子将相关数据存储在同一个碎片中,作为单独的文档,避免网络
  • 父/子在检索数据时需要一个连接过程
  • 嵌套对象将内部和外部对象存储在一起,作为单个文档
因此,我们可以推断:

  • 更新嵌套对象将重新索引整个索引,如果您的文档很大,这可能会非常昂贵
  • 仅更新父项或子项不会影响另一项
  • 搜索嵌套对象速度较快,节省了连接过程
建议 就我理解你的问题而言,你应该使用parent/child

  • 当您的群评论越来越多时,添加新评论仍然会重新索引整个内容,这可能非常耗时
  • 另一方面,搜索父/子评论只需在找到子评论后再查找一次,这是相对可以接受的
此外,您还应将搜索注释的速度与添加注释的速度进行比较:

  • 如果你需要搜索很多但有一些新的注释,也许你可以选择嵌套对象
  • 否则,选择父/子
顺便说一下,您可以将两者结合起来:

  • 当此提要处于活动状态时,使用父/子来存储它们
  • 关闭时,即不能再添加注释,将其移动到具有嵌套对象的新索引中
我已经编辑了内容,如果你没有暗示这对我很有帮助的话。