嵌套的elasticsearch条件字段还是命名别名?

yftpprvb  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(0)|浏览(244)

在我的elasticsearch设置中,我想在一个大的付款集合(数十亿)中进行搜索,其中每个付款都有多个帐户名。这是因为每个用户都可以为每个帐户分配一个个人名称,而一个帐户可以由许多用户共享。1个帐户,多个名称(每个用户1个)。
简化的支付结构:

Payment {
    "agreementNumber": 12345,
    "accountNumber": 123456789,
    "amount": 17,
    "currency": "EUR",
    "accountName" : ...
}

用户需要能够搜索和排序帐户名,但是结果集必须根据用户的不同而不同。
如果bob和lisa都可以访问同一个帐户,但都有单独的命名,则按帐户名排序将使付款以不同的顺序出现。但其余的付款细节保持不变。对于几千个创建了自己命名的用户,可以重复这个例子。
我考虑过:
扁平或内部物体
我无法将支付结构扁平化以包含所有可能的帐户名,而只能使用给定上下文的特定用户的帐户名。这意味着,使用该帐号进行的所有付款都需要包含所有名称,并且每次创建、更新或删除别名时,都需要更新使用该帐号进行的所有付款。
嵌套的
在这里,我将创建一个在父级中引用的名称集合。这将减轻存储,因为我只维护一次帐户名。这带来了一些限制,即更新我的嵌套元素(帐户名列表)也会触发所有父级(付款)的重新索引。由于一个帐号可能是数千至数百万笔付款的一部分,这将是非常昂贵的。
父/子关系
将帐户名作为父级的子级意味着,我可以独立地更新子级和父级,从而消除嵌套的缺点。不过,据我所知,elasticsearch不支持联接,这意味着我将获得付款和帐户名作为单独文档。
我如何构造我的帐户名,而不是疯狂昂贵?
请注意,上述限制源于此帖子:https://www.elastic.co/blog/managing-relations-inside-elasticsearch

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题