在我的Elasticsearch服务器上,我有三个索引:Person
,Archive
和Document
。
每个文档都有一个archive
字段,该字段是_id
所在的Archive
。
每个档案都有一个owner
,_id
是Person
的归档所有者。
通过上面的索引,我可以将文档汇总到存档和存档的存储桶中。
如何在人员聚合中包含文档,因此如果我过滤特定的人,我会获得归档于该人的档案及其文档,而不仅仅是档案?
这是我到目前为止过滤和汇总档案到业主的桶:
{
"post_filter": {
"terms": {
"owner": [
"my_owner_id"
]
}
},
"aggs": {
"_filter_archive": {
"filter": {
"terms": {
"owner": [
"my_owner_id"
]
}
},
"aggs": {
"archive": {
"terms": {
"field": "archive"
}
}
}
}
}
}
答案 0 :(得分:2)
这很难回答,因为您似乎缺少一些细节。简单的答案是:使用嵌套文档或父子关系。在您的情况下使用哪一个取决于很多因素。我的建议是尝试两者并测试。看看他们的表现如何。第三种选择是完全归一化数据。这就是我询问更新的原因,它们的频率,个人文档的大小,存档文档的大小等等。如果您不准备回答这些问题,那么请测试嵌套和父子,然后选择一个或者其他。祝你好运!