弹性搜索中的大小参数

Size parameter in elastic search

可能是初学者的问题,但我对尺寸有一些疑惑。 根据弹性搜索规范,大小的最大值可以为 10000,我想在下面验证我的理解:

示例查询:

GET testindex-2016.04.14/_search
{
  "size": 10000,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "type": "TEST"
          }
        }
      ]
    }
  }, 
  "aggs": {
    "testAggs": {
      "terms": {
        "field": "type",
        "size": 0
      },
      "aggs": {
        "innerAggs": {
          "max": {
            "field": "Value"
          }
        }
      }
    }
  }
}

回复:

{
  "took": 6,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 26949,
    "max_score": 0,
    "hits": [
       .....10000 records   
     ]
  },
  "aggregations": {
    "test": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "TEST",
          "doc_count": 26949,
          "innerAggs": {
            "value": 150
          }
        }
      ]
    }
  }
}

1 - 如果 size 设置为 10000,并且我们在 elasticsearch 中有超过 200000 条记录满足查询,那么在查询结果中,我将得到 no.点击数达到 10000,但 "total" : 200000.

2 - 有多少记录可用于进一步聚合 - 没有。点击率或 "total" 值。

3 - 如果我们设置 "size" : 0,在这种情况下,我们得到 hits = 0,但是有多少记录可用于聚合?

请澄清我的理解,有疑问的地方提出意见。谢谢

  1. size参数只告诉应该在响应中返回多少匹配,所以如果你指定大小:10000 和 200000 条记录匹配,你将在结果命中,但 total 将显示 200000

  2. 聚合始终根据完整结果集计算,因此 total 值。

  3. 见2