弹性搜索中的大小参数

pba*_*pai 5 elasticsearch elastic-stack

这可能是一个初学者的问题,但我对大小有一些疑问。根据弹性搜索规范,大小的最大值可以是 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"
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

回复:

{
  "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
          }
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

1 - 如果大小设置为 10000,并且我们在弹性搜索中有超过 200000 条记录满足查询,那么在查询结果中,我将得到没有。命中 10000,但“总数”:200000。

2 - 有多少记录可用于进一步聚合 - 否。点击次数或“总”值。

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

请澄清我的理解,并在有任何疑问时发表评论。谢谢。

Val*_*Val 7

  1. size参数仅说明应在响应中返回多少命中,因此如果您指定 size: 10000 和 200000 记录匹配,您将在结果命中中获得 10000 个匹配文档,但total会说明 200000

  2. 聚合总是在完整的结果集上计算,所以total值。

  3. 见2