【问题标题】:Size parameter in elastic search弹性搜索中的大小参数
【发布时间】:2017-03-29 05:42:43
【问题描述】:

这可能是一个初学者的问题,但我对大小有一些疑问。 根据弹性搜索规范,大小的最大值可以是 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,我们在弹性搜索中有超过 200000 条记录满足查询,所以在查询结果中,我会得到否。点击次数达到 10000,但“总数”:200000。

2 - 有多少记录可用于进一步聚合 - 没有。命中数或“总”值。

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

请澄清我的理解,并对 cme​​ts 提出任何疑问。谢谢。

【问题讨论】:

    标签: elasticsearch elastic-stack


    【解决方案1】:
    1. size 参数仅说明应在响应中返回多少命中,因此如果您指定 size: 10000 和 200000 条记录匹配,您将在结果命中中获得 10000 个匹配文档,但 @987654322 @将声明200000

    2. 总是根据完整的结果集计算聚合,因此是 total 值。

    3. 见 2

    【讨论】:

    • 感谢您的回答,我知道我会得到您的回答,所以我还有一个疑问-“总”值是否有上限,我的意思是查询和聚合运行所有匹配的记录,无论数量多少。
    • 没有上限,只有一个物理的,即一个分片可以包含的总文档数(=Integer.MAX_VALUE)。
    猜你喜欢
    • 2023-03-26
    • 2023-02-06
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多