【问题标题】:Elastic Search Nested Aggregation size弹性搜索嵌套聚合大小
【发布时间】:2017-03-01 17:36:59
【问题描述】:

我有一个只返回 10 个结果的嵌套聚合。我希望它返回 1000 个结果。但是,我不确定在哪里指定大小。我的映射看起来像(它在 YAML 中,但被处理为 json,不用担心)

      mappings:
        datainfo:
          properties:
            filterValues:
              type: string
            metadata:
              properties:
                isPrimary:
                  type: boolean
                name:
                  index: not_analyzed
                  type: string
                source:
                  enabled: false
                  type: object
                type:
                  index: not_analyzed
                  type: string
                val:
                  index: not_analyzed
                  type: string
              type: nested
            source:
              enabled: false
              type: object
            title:
              type: string

我的查询看起来像

{
    "query": "<some query>",
    "aggs": {
        "series": {
            "nested": { "path": "metadata" },
            "aggs": {
                 "val": {
                    "terms": { "field": "metadata.val" },
                    "aggs": {
                        "type": {
                            "terms": { "field": "metadata.name" }
                        }
                    }
                 }
             }
         }
     }
 }

为了使这个返回 X 结果,我应该在哪里放置一个“大小”字段?它目前只返回 10

【问题讨论】:

标签: elasticsearch


【解决方案1】:

要指定查询结果的个数,可以使用size, or size with range:

{
"query": "<some query>",
"size": 1000,
"aggs": {
    "series": {
        "nested": { "path": "metadata" },
        "aggs": {
             "val": {
                "terms": { "field": "metadata.val" },
                "aggs": {
                    "type": {
                        "terms": { "field": "metadata.name" }
                    }
                }
             }
         }
     }
 }

}

要指定聚合桶上的结果数,您可以使用Top Hits Aggregation(来自链接的示例):

{
  "aggs": {
    "top-tags": {
        "terms": {
            "field": "tags",
            "size": 3
        },
        "aggs": {
            "top_tag_hits": {
                "top_hits": {
                    "sort": [
                        {
                            "last_activity_date": {
                                "order": "desc"
                            }
                        }
                    ],
                    "_source": {
                        "includes": [
                            "title"
                        ]
                    },
                    "size" : 100
                }
            }
        }
    }
  }
}

如果您只需要聚合结果,推荐的一种方法是将查询结果的大小指定为 0,这样可以消除第一次提取,从而获得更好的性能。

【讨论】:

    猜你喜欢
    • 2015-12-30
    • 1970-01-01
    • 2018-08-06
    • 2019-04-24
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多