【问题标题】:How can I get ElasticSearch aggregations to count the parent documents instead of the nested documents如何获得 ElasticSearch 聚合来计算父文档而不是嵌套文档
【发布时间】:2018-07-22 19:05:48
【问题描述】:

我的 ElasticSearch 索引有嵌套文档,以指示与文档相关的各种事件发生的位置。我正在使用聚合来获取这些地方的各个方面。返回的计数是该地点出现次数的计数。例如,如果文档的出生地和死亡地为加利福尼亚州,则加利福尼亚州的聚合计数为 2。我希望聚合计数是包含特定地点的文档数,而不是包含该地点的子文档数.我的架构的相关部分如下所示:

"mappings": {
    "document": {
        "properties": {
            "docId" : { "type": "keyword" },
            "place": {
                "type": "nested",
                "properties": {
                    "id": { "type": "keyword" },
                    "type": { "type": "keyword" },
                    "loc": { "type" : "geo_point" },
                    "text": { 
                        "type": "text",
                        "analyzer": "english",
                        "copy_to" : "text"
                    }
                },
                "dynamic": false
            }
        }
    }
}

我可以通过像这样的简单聚合获得方面,它检索类型为 place.vital.* 的地点(例如 place.vital.birth、place.vital.death 等),但会计算嵌套文档的数量,不是父文档的数量。

"aggs": {
"place.vital": {
  "aggs": {
    "types": {
      "aggs": {
        "values": {
          "terms": {
            "field": "place.id"
          }
        }
      },
      "terms": {
        "field": "place.type",
        "include": "place\\.vital\\..*"
      }
    }
  },
  "nested": {
    "path": "place"
  }
}

是否可以调整我的聚合使其只计算每个父文档一次?

【问题讨论】:

  • 罗伯特运气好吗?

标签: elasticsearch elasticsearch-aggregation


【解决方案1】:

使用反向嵌套聚合。然后,这将创建一个包含嵌套计数的聚合和一个包含父计数的子聚合。

更多详情请参阅how to return the count of unique documents by using elasticsearch aggregation

【讨论】:

    【解决方案2】:

    我相信您可以使用嵌套字段来做到这一点,但不能使用父子关系。如果您正在寻找地点 为什么不搜索地点索引并按子项过滤?

    Has child query

    【讨论】:

    • 我首先想到的是反向嵌套聚合。是的......这显然只适用于嵌套。我认为父母孩子没有等价物。这些文档的索引方式甚至可能都不可能。
    • 是的,这在父子关系中不存在。另一种方法是对数据进行非规范化并序列化地点索引上的所有事件数据,但根据每个地点的事件数量,这可能无法很好地执行。
    • 伙计们,他正在使用嵌套字段...那你为什么要谈论父子关系?
    • 你是对的。我的错。这可以通过反向嵌套聚合来完成。
    猜你喜欢
    • 2020-11-13
    • 2018-07-14
    • 2016-07-11
    • 1970-01-01
    • 2015-05-06
    • 2016-01-07
    • 2020-08-26
    • 1970-01-01
    • 2018-06-22
    相关资源
    最近更新 更多