我正在构建一个跨越多种类型关联对象的Elasticsearch索引。
我尝试了多种方法,但我似乎无法在性能,可扩展性和匹配产品要求之间找到适当的平衡。
以下是精简数据模型:
user
* id
* email
* created_at
...
has many:
associated_1
* type
* created_at
...
associated_2
* type
* created_at
...
目标是运行一个查询:
email
过滤,associated_1
type
,associated_2
created_at
排序。我尝试了几种方法。
user
具有一定程度的流失(更新),一些嵌套对象,因此无法真正发挥作用。这意味着要对很复杂的对象进行重新索引。为了增加另一个复杂程度 - 我还需要在一段时间后退出数据。主user
对象应该始终位于索引中,而关联对象有一个TTL(我用日常索引做TTL)。
我首选的解决方案是3
,但我不知道如何查询。
替代解决方案是2
,但这会增加大量数据重复,因为我需要将user
对象复制到每个每日索引以维持父/子关联。
感谢任何帮助/意见/建议!