0

我将在我的应用程序中使用 ElasticSearch 作为搜索存储库。当对象之间存在关联/关系时,关于在搜索索引中组织对象的最佳做法是什么,我有几个问题。

据我所知,搜索索引是一个扁平结构,不能像数据库一样使用关系概念。

假设您有这些域对象:

Person : - 与Car是一对多的关系

汽车: - 由一个人拥有,与多对一

部门: - 每个部门有很多,每个可能属于多个部门,多对多

将其存储在搜索索引中的最佳方法是什么?有什么选择?例如,我想找到属于某个部门的所有人员,或者汽车功率超过 300 马力的所有人员。如果重要,我正在使用 Java 客户端 API。

4

1 回答 1

1

弹性搜索(或 Lucene)不是关系数据库,因此您需要扁平化您的关系模型。

尝试为获得这种结构的视图建模 -

Car|Person|Department

这将为您提供查找汽车所需的所有属性。这可以导入到Car.

相似地

Person|Department

会给你一个人的所有信息。这将帮助您查找Person

Department可以是第三个文件。

每个实体可以有多个文档。但是关系需要被翻译为实体的属性。

于 2013-03-26T13:44:03.303 回答