我很确定我知道这个问题的答案,但我正在寻找具有更多Elasticsearch经验的人的确认.
假设我有一个包含作者和书籍的数据库.作者可以与0本或更多书籍相关联,并且书籍可以与1个或更多作者相关联.我们希望用户能够搜索作者姓名以查找作者及其所有书籍,并且我们还希望他们能够搜索书名以取回其作者.我们知道会有很多多作者的书.
因为Elasticsearch只直接支持一个级别的父子关系,并且因为子级只能有一个父级,所以在我看来,我们需要对数据进行非规范化并使用嵌套对象来建立这种关系.如果我们修改已发布23本书的作者的属性,我们将需要重新索引作者记录和他/她的所有23本书记录.
在我的幻想世界中,我希望拥有这23本书各自包含一系列作者ID,以便在重新索引作者时我不必重新索引书籍.如果一本书只能有一个作者,看起来这肯定可以使用Elasticsearch的父子支持,但由于多对多的要求,我必须使用嵌套对象并在任何更改时重新索引任何相关对象.
它是否正确?它看起来似乎更多的工作(当然还有更多的更新),但我想以正确的方式做到这一点,而不是引入复杂性,错误和疯狂的"聪明"方式.
任何指导将不胜感激.