我正在使用 ElasticSearch 在我的应用程序中提供搜索功能。
我们需要做的事情之一是有一种方法来存储不同 ElasticSearch 类型之间的任意关系。
假设我们的ElasticSearch索引中有三种类型,例如
block 引用>"Customers","Lifestyle" and "MovieGenres".
假设用户想要为客户关联多个生活方式,发生的情况是用户在应用程序中指定映射,并且在 ElasticSearch 中采用 “客户”的 docId、“生活方式”的 docId 并将其放入 “Mapper” 类型中,该类型存储 docid 对并存储关联输入文本(“cutomerToLifeStyle”)。
以类似的方式,客户和电影类型之间的关联将插入客户和电影类型的一对 docId 以及关联类型文本,例如 ("customerToMovieGenre”)。这个想法是巩固这个“Mapper”类型中类型之间的任何类型的任意关系。
这可能是解决问题的一种有点简单的方法,但是有人认为这种方法有什么问题吗?
最佳答案
纯粹从设计角度来看,我还会选择“Mapper”类型,通过存储它们的 id 来链接两个文档,而不是例如在“Customers”文档中列出“MovieGenres”的 id。但是,我将为每个关系引入一个单独的“Mapper”类型。 (即“CustomerToLifeStyle”类型和“CustomerToMovieGenre”类型。)原因是您可能会在特定于关系的映射器文档中存储其他数据。假设您想要存储客户对某种类型的电影的评价。此信息在客户与生活方式的关系中没有意义。您想要在映射器文档中存储的附加数据越多,您就会看到“CustomerToLifeStyle”数据和“CustomerToMovieGenre”数据变得不同。因此,为每种关系设置单独的类型可以使您的设计美观整洁。
关于search - ElasticSearch 中类型内关联的设计建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22672848/