首先解释下Timeout的作用:
比如,一个search,可能要10分钟才能搜完,那么,es就会等10分钟,直到结果出来。然而,在某些场景下,客户是等不了10分钟的。比如,淘宝搜东西的时候,客户宁可等待1秒钟,得到100条结果,也不愿意等10分钟,看到10000条结果。
所以,我们会在search上指定timeout时间,超过指定时间,就开车了(给用户返回已经搜到的数据)。。
注意几点:
1. timeout并不会终止search,虽然结果返回了,但后台仍然会继续执行这个查询。
2. 为什么有时候实际返回的took比timeout要大? 跟Counter的采样间隔有关。默认为200ms
还是贴Github吧。
(我也不确定这是不是took大于timeout的原因,因为本人对ES和Lucene认识较浅,google也没有类似答案。希望有知道的大神可以指点一下)