search - ElasticSearch 中类型内关联的设计建模

标签 search elasticsearch mapping model-associations

我正在使用 ElasticSearch 在我的应用程序中提供搜索功能。

我们需要做的事情之一是有一种方法来存储不同 ElasticSearch 类型之间的任意关系。

假设我们的ElasticSearch索引中有三种类型,例如

"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/

相关文章:

c++ - 如何将同一个 Widget 连接到多个 QSignalMapper 映射

asp.net-mvc-3 - 如何在 Lucene.net 搜索中添加同义词搜索

python - 在 GAE 中组合文本搜索和查询过滤器

c# - 在Elasticsearch NEST中的主要多重匹配查询之后应用不同的过滤器

elasticsearch - ElasticSearch function_score抛出parsing_exception

python - 如何用字典中的值交换键?

javascript - 在 Javascript 数组中查找元素的有效方法

ios - 在 NSArray 中搜索值的范围

php - php的elasticsearch包含文件的位置

AWK 关联数组、映射或 HashMap