我的应用程序中有两个实体:任务和用户。每个任务分配给一个用户。每个应用程序示例可能有数万个任务,但每个应用程序示例只有数十或数百个用户。
我想按分配的用户名对我的任务进行排序。
但是,分配的用户名称可能会随时间而改变。如果我将这些数据非规范化,那么每当用户更改其名称时,我就需要更新数百或数千个任务,我认为这可能是低效的。
ElasticSearch join字段类型感觉很适合这里,因为我有很多孩子,但父母很少。但我找不到从子级引用父级字段的方法。(或者更好的方法是根据父字段的值为子字段建立索引。)
或者,如果ElasticSearch有一个高效的批量更新API:1)不需要我将用户的所有任务加载到应用程序代码中,2)可以在一次刷新中原子地更新所有非规范化的帐户名称,那么我觉得这将是我的用例的可行解决方案。
(This应用程序实际上可以在AWS OpenSearch上运行。)
1条答案
按热度按时间kse8i1jr1#
您可以:
1.使用批量更新进行反规范化。即直接在每个任务文档中存储所分配的用户名。当一个用户的名字改变批量更新将使它ez改变他们所有。
或者。
1.您可以使用父子关系,而不是使用ElasticSearch的join字段。
即,用户和任务的单独索引,其中任务是用户的孩子。
x
的数据