身安不如心安,屋宽不如心宽 。

es Query API 如何提高并发查询的能力

Elasticsearch | 作者 menzhipeng | 发布于2020年05月27日 | 阅读数:3115

jmeter 100线程、循环调用查询接口三十秒,聚合报告能达到2200ms的平均值,
不知道如何提高并发的能力
请大神指教,求知无不言
 
 
附上代码:
 

MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery(key,"drugGenericName","goodsName","approvalNo", "corporateGoodsCode","producers","goodsHabitat"); TermQueryBuilder entIdMatchQueryBuilder = QueryBuilders.termQuery("entId",entId); TermQueryBuilder hospitalIdMatchQueryBuilder = QueryBuilders.termQuery("hospitalId",hospitalId); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery() .should( multiMatchQueryBuilder ) .filter( QueryBuilders.boolQuery() .filter(entIdMatchQueryBuilder) .filter(hospitalIdMatchQueryBuilder) ) .minimumShouldMatch(1) ;
 
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

这是检索优化的范畴问题,仅说下思路:

第一,您需要明确的确认是哪里出了问题。看到的现象是慢?你需要知道是什么原因导致的吗?

第二:可以借助日志(基础日志和慢日志)、和配置优化、优化查询语句等两个角度进行考虑。

第三:日志能告诉你大致是哪里出了问题,比如是内存或者其他的异常。

第三:(重要)并发性能的提升多发和机器的硬件资源的配置有关系。你需要考虑CPU的队列和线程池大小的配置,堆内存的设置,缓存的设置等。

第四:把你的查询的dsl稍后打印出来,看看有没有优化的空间。需要结合数据的建模进行一起考虑。

第五:结合kibana或cerebro的监控考虑调优方案。

要回复问题请先登录注册