具有多个父子关系的Elasticsearch
Book,User和Review说,我正在构建具有复杂模型的应用程序。
评论包含书籍和用户ID。为了能够搜索至少包含一个评论的“图书”,我已将“图书”设置为“评论”的父级,并且具有这样的路由。但是,我还需要找到撰写包含某些短语的评论的用户。
是否可以同时将书和用户作为评论的父级?有没有更好的方法来处理这种情况?
请注意,我无法更改数据建模的方式/不愿意这样做,因为数据已从持久性数据库传输到Elasticsearch。
回答:
据我所知,你不能与两个父母有文件。
我的建议基于Elasticsearch的Application-side
join章节的权威指南:
- 建立父母/子女关系
Book
/Review
- 确保您
user_id
在Review
映射中具有包含撰写该评论的用户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的权威指南
以上是 具有多个父子关系的Elasticsearch 的全部内容, 来源链接: utcz.com/qa/405997.html