通过三分之一汇总和过滤从一个索引到另一个索引

时间:2018-01-12 14:45:15

标签: elasticsearch search faceted-search elasticsearch-aggregation

在我的Elasticsearch服务器上,我有三个索引:PersonArchiveDocument

  • 每个文档都有一个archive字段,该字段是_id所在的Archive

  • 每个档案都有一个owner_idPerson的归档所有者。

通过上面的索引,我可以将文档汇总到存档和存档的存储桶中。

如何在人员聚合中包含文档,因此如果我过滤特定的人,我会获得归档于该人的档案及其文档,而不仅仅是档案?

这是我到目前为止过滤和汇总档案到业主的桶:

{
  "post_filter": {
    "terms": {
      "owner": [
        "my_owner_id"
      ]
    }
  },
  "aggs": {
    "_filter_archive": {
      "filter": {
        "terms": {
          "owner": [
            "my_owner_id"
          ]
        }
      },
      "aggs": {
        "archive": {
          "terms": {
            "field": "archive"
          }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:2)

这很难回答,因为您似乎缺少一些细节。简单的答案是:使用嵌套文档或父子关系。在您的情况下使用哪一个取决于很多因素。我的建议是尝试两者并测试。看看他们的表现如何。第三种选择是完全归一化数据。这就是我询问更新的原因,它们的频率,个人文档的大小,存档文档的大小等等。如果您不准备回答这些问题,那么请测试嵌套和父子,然后选择一个或者其他。祝你好运!