Spring elasticsearch:为每个用户创建索引

时间:2018-04-24 15:05:49

标签: spring spring-boot elasticsearch indexing spring-data-elasticsearch

我正在使用Spring boot和elasticsearch(& spring-data-elasticsearch)构建一个应用程序。

我有一个实体用户,其中包含一个区域列表(即每个用户负责一组区域)。

我有另一个与区域相关联的实体报告(即每个报告都有一个区域)

我想为每个用户创建报告索引。这样每个索引只包含用户负责的区域的报告。

这样,当用户搜索报告时,搜索仅应用于他的索引。

此外,这些索引必须是动态的(即如果用户的区域被更改,或者添加了新的报告,则更新)。

我怎样才能做到这一点? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

为什么不以这种方式为用户建模,以便将用户相关信息存储在一行(文档)中,我认为嵌套字段是个好主意,可以使用嵌套查询进行搜索,这样,

例如,每个用户负责一组区域,因此区域可以嵌套在用户中,因为区域嵌套它们将作为单独的文档存储

@Field(type=FieldType.Nested)
private Set<Regions> regions;

其次,我不认为每次建立一个新的指数是个好主意