elasticsearch 使用JestClient在java中编写的lambda函数对AWS Elasticsearch的第一个查询的响应非常慢,elasticsearch,aws-lambda,jest-client,elasticsearch,Aws Lambda,Jest Client" /> elasticsearch 使用JestClient在java中编写的lambda函数对AWS Elasticsearch的第一个查询的响应非常慢,elasticsearch,aws-lambda,jest-client,elasticsearch,Aws Lambda,Jest Client" />

elasticsearch 使用JestClient在java中编写的lambda函数对AWS Elasticsearch的第一个查询的响应非常慢

elasticsearch 使用JestClient在java中编写的lambda函数对AWS Elasticsearch的第一个查询的响应非常慢,elasticsearch,aws-lambda,jest-client,elasticsearch,Aws Lambda,Jest Client,从java编写的lambda函数查询AWS Elasticsearch时,第一次调用大约需要25秒,后续调用(相同的查询)不到一秒钟。 如果我没有查询Elasticsearch很长一段时间,比如说5分钟,就会发生这种情况。冷启动不会导致25秒延迟。 我的直觉是,您的弹性搜索查询一定是不合适的,需要时间才能得到结果。在第一次调用之后,它会自动缓存在弹性搜索端,您可以得到更快的结果。请通过直接通过邮递员进行查询并在querystring中另外传递request_cache=false来验证此语句 另

从java编写的lambda函数查询AWS Elasticsearch时,第一次调用大约需要25秒,后续调用(相同的查询)不到一秒钟。
如果我没有查询Elasticsearch很长一段时间,比如说5分钟,就会发生这种情况。

冷启动不会导致25秒延迟。 我的直觉是,您的弹性搜索查询一定是不合适的,需要时间才能得到结果。在第一次调用之后,它会自动缓存在弹性搜索端,您可以得到更快的结果。请通过直接通过邮递员进行查询并在querystring中另外传递request_cache=false来验证此语句 另一种方法是使用简单的elasticsearch查询进行测试


为了避免冷启动,您可以为lambda函数设置配置的容量

这是Java lambda冷启动问题吗?您需要添加一些计时日志记录。我在Java中使用的lambda的冷启动时间不到一秒钟。一些代码可能也会有帮助。是的,在添加计时日志之后,只有我知道这一点。if(StringUtils.equalsIgnoreCase(model.getAutoType(),“PLACE”){Long start=System.currentTimeMillis();//使用JestClient列表和ADS=agentSearchHelper.searchESS(model.getSearchString(),true)进行弹性搜索调用;LOGGER.debug(“所用时间”+(System.currentTimeMillis()-start)+“ms”);}我在方法的开头和结尾添加了计时日志。无论如何,关于冷启动时间,您是对的,对于用java编写的函数来说,这不到一秒钟。JestClient根本没有引起任何问题,这只是我初始化它的方式。太多不必要的DynamoDB调用正在发生,并且正在减慢速度。我的查询是must、prefix和must not子句的组合。经邮递员核实,这需要同样的时间。所以,如果我设置request_cache=false,它将始终占用相同的时间?Beisdes,我正在尝试提取1K条记录,这是一个问题吗?我还注意到,如果我从另一个用Node js编写的函数中运行相同的查询,通常最长需要1.5秒。我认为我在用java编写的lambda函数中使用的JestClient速度很慢。@AsraarWani:request\u cache=false我建议只验证测试。是的,正如我提到的,缓存false也需要类似的时间。尝试提取1K条记录并不是问题,取回记录的碎片数量和查询复杂性决定了结果如果有帮助,请标记ans