网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

怎样深入理解batched_reduce_size

这期内容当中小编将会给大家带来有关怎样深入理解batched_reduce_size,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

创新互联自2013年起,先为伊川等服务建站,伊川等地企业,进行企业商务咨询服务。为伊川企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

在search 流程中,协调节点收到客户端的查询请求后,将请求涉及到的转发到其他数据节点,这个过程中会以 shard 为单位发送 query请求,待所有的请求都收到响应(QuerySearchResult)后进行下一步处理。

batched_reduce_size 参数用于控制在Search过程中,当协调节点收到指定的结果时执行一次 reduce。

官网对他的解释如下:

(Optional, integer) The number of shard results that should be reduced at once on the coordinating node. This value should be used as a protection mechanism to reduce the memory overhead per search request if the potential number of shards in the request can be large. Defaults to 512.

这个解释看上去难以理解本质,因此查阅一下代码,重新解释一下这个参数的含义:协调节点并行发送完 query 请求后,收到的响应QuerySearchResult达到batched_reduce_size数量时,执行一次 reduce,reduce 执行以下操作:

  1. 如果请求中含有聚合,则对这批结果执行聚合

  2. 如果请求中需要计算 TopN,则对这批结果执行计算

因此这个参数的主要作用是防止协调节点为了汇总全部结果而占用太多内存。

主要实现代码如下,bufferSize就是batched_reduce_size设置的值,默认为512

private synchronized void consumeInternal(QuerySearchResult querySearchResult) {
   if (index == bufferSize) {
       if (hasAggs) {
           InternalAggregations reducedAggs = InternalAggregations.reduce(Arrays.asList(aggsBuffer), reduceContext);
           Arrays.fill(aggsBuffer, null);
           aggsBuffer[0] = reducedAggs;
       }
       if (hasTopDocs) {
           TopDocs reducedTopDocs = mergeTopDocs(Arrays.asList(topDocsBuffer),
                   querySearchResult.from() + querySearchResult.size(), 0);
           Arrays.fill(topDocsBuffer, null);
           topDocsBuffer[0] = reducedTopDocs;
       }
       numReducePhases++;
       index = 1;
   }
   final int i = index++;
   if (hasAggs) {
       aggsBuffer[i] = (InternalAggregations) querySearchResult.consumeAggs();
   }
   if (hasTopDocs) {
       topDocsBuffer[i] = topDocs.topDocs;
   }
}

上述就是小编为大家分享的怎样深入理解batched_reduce_size了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


当前标题:怎样深入理解batched_reduce_size
文章分享:http://bjjierui.cn/article/pjicic.html

其他资讯