首页 > 解决方案 > Spring elasticsearch:为每个用户创建索引

问题描述

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

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

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

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

这样,当用户搜索报表时,搜索只应用在他的索引中。

此外,这些索引必须是动态的(即,如果用户的区域发生变化或添加新报告,则更新)。

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

标签: springspring-bootelasticsearchindexingspring-data-elasticsearch

解决方案


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

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

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

其次,我不认为每次都建立一个新索引是一个好主意


推荐阅读