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

Osk*_*son 7 search faceted-search elasticsearch elasticsearch-aggregation

在我Elasticsearch服务器我有三个指标:Person,ArchiveDocument.

  • 每个文档都有一个archive字段,它是_idArchive它在不在.

  • 每个归档有一个owner它是_idPerson那是存档的所有者.

通过上面的索引,我可以将文档聚合到存档和存档的存储桶中.

我怎样才能将文档包含在人员聚合中,这样如果我过滤特定的人,我会获得档案及其属于该人的文档,而不仅仅是档案?


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

{
  "post_filter": {
    "terms": {
      "owner": [
        "my_owner_id"
      ]
    }
  },
  "aggs": {
    "_filter_archive": {
      "filter": {
        "terms": {
          "owner": [
            "my_owner_id"
          ]
        }
      },
      "aggs": {
        "archive": {
          "terms": {
            "field": "archive"
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

And*_*fan 2

这将很难回答,因为您似乎遗漏了一些细节。简单的答案是:使用嵌套文档或父子关系。根据您的情况使用哪一种取决于很多因素。我的建议是尝试并测试它们。看看他们的表现如何。第三种选择是完全非规范化数据。这就是我询问更新、更新频率、个人文档有多大、存档文档有多大等问题的原因。如果您不准备回答这些问题,请测试嵌套和父子关系并选择其中之一或其他。祝你好运!