当前位置: 首页 > 面试题库 >

具有多个父子关系的Elasticsearch

周意智
2023-03-14
问题内容

Book,User和Review说,我正在构建具有复杂模型的应用程序。

评论包含书籍和用户ID。为了能够搜索至少包含一个评论的“图书”,我已将“图书”设置为“评论”的父级,并且具有这样的路由。但是,我还需要找到撰写包含某些短语的评论的用户。

是否可以同时将书和用户作为评论的父级?有没有更好的方法来处理这种情况?

请注意,我无法更改数据建模的方式/不愿意这样做,因为数据已从持久性数据库传输到Elasticsearch。


问题答案:

据我所知,你不能与两个父母有文件。

我的建议基于Elasticsearch的Application-side
join章节的权威指南

  • 建立父母/子女关系Book/Review
  • 确保您user_idReview映射中具有包含撰写该评论的用户ID的属性。

我认为这涵盖了您描述的两种用例:

  • Books that contain at least one review可以通过有子过滤器 / 查询来解决
  • Users who wrote reviews that contain certain phrases可以通过查询您要搜索的短语并在字段上进行基数汇总来解决user_id。如果您需要用户信息,则必须使用检索到的ID查询数据库(或其他Elasticsearch索引)。

编辑: "give me the books that have reviews this month written by user whose name started with John"

我建议您收集所有这些高级用例,并对实现它们所需的数据进行非规范化。在这种特殊情况下,只需将用户名标准化为即可Review。无论如何,elasticsearch的人们已经在他们的博客中写过关于管理关系的文章,或者elasticsearch的权威指南



 类似资料:
  • 问题内容: 我们有一个带有父子关系的表,希望对它进行排序。排序标准是这样的,以便在遍历结果时,与父ID匹配的行应该已经存在: 问题在于两个密钥都是字符串,因此按ID或PARENT_ID排序将无法解决问题。 问题答案: 对于Oracle,使用分层查询:

  • 我需要支持一个涉及以下实体的场景(使用JPA): 用户 一个用户可以有多个帐户,一个帐户可以在多个用户之间共享,这是迄今为止的标准@ManyToMany关系。 一个用户可以为每个帐户拥有一组不同的角色,一个角色可以在多个用户之间共享。 我遵循了这个实践,它解释了一种用额外列映射多对多关联的方法,但我不确定我是否得到了它。 用户实体: 账户实体: 用户帐户实体: 用户帐号: 我正在创建一个新用户并尝

  • 我只想遍历一棵树并聚合父树及其直接子树。我该如何使用Gremlin将其聚合到({parent1,child},{child,child1}…}的结构列表数组中 在这种情况下,我想输出 订单并不重要。此外,请注意,我希望避免仅在同一节点上存在的任何圆形边(从子顶点到父顶点不可能存在圆形循环) 每个顶点都有一个标签城市,每个边都有一个标签高速公路 我的查询超时了,我想知道是否有更快的方法来实现这一点。

  • 实现一对多关系并选择父项和子项我有一个关系,我想进行查询(选择*) 文件夹。JAVA 作者。JAVA 我的请求: 我得到了这样的结果: 我的代码有什么问题?什么是问题,当我执行查询我得到了这个结果...我想得到这个结果

  • 问题内容: 在为可以搜索多本书的索引创建映射时,最好使用如下所示的嵌套映射,或者使用具有父子关系的文档 整个书籍html的大小约为250kB。我想查询诸如 我真的不知道我想执行的查询的细节,但是具有很大的灵活性以便能够尝试非常怪异的查询而不必过多更改所有映射非常重要。 问题答案: 如果使用该类型,则所有内容都将包含在同一文档中,对于大型书籍而言,这可能会很麻烦。 而如果您为每个章节和/或章节使用父

  • 我是新来laravel的,所以原谅我可能的愚蠢问题。此外,我确实研究了所有其他“类似”的问题,但要么它们没有重现正确的解决方案,要么我真的很难理解。 情景: 我有一个帖子模型和一个主题模型。这就是他们现在的样子。 在岗位上。php 在主题上。php 现在,我需要实现的是: 如果将查询参数传递给请求(即q=Food),我只想返回在主题关系中包含主题食物的帖子,而不返回其他帖子。如果什么都没有通过,那