大佬教程收集整理的这篇文章主要介绍了Elasticsearch:我们开始使用 elasticsearch 高级客户端后高 CPU 使用率的模式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们最近开始使用elasticsearch高级客户端,我们使用scroll API从ES获取大量数据。我们看到高 cpu 利用率的模式如下:
这是每 30 分钟重复一次的模式。不知道发生了什么。我们在 elasticsearch 中也看到了异常 -
[2021-05-12T04:19:29,516][DEBUG][o.e.a.s.TransportSearchScrollAction] [node-2] [93486247] 无法执行查询阶段 org.elasticsearch.transport.RemoteTransportException: [node-3][10.160.86.222:7550][inDices:data/read/search[phase/query/scroll]] 引起:org.elasticsearch.search.SearchContextMissingException:否 找到 ID 的搜索上下文 [93486247] 在 org.elasticsearch.search.Searchservice.getExecutor(Searchservice.java:496) ~[elasticsearch-6.8.9.jar:6.8.9] 在 org.elasticsearch.search.Searchservice.runAsync(Searchservice.java:373) ~[elasticsearch-6.8.9.jar:6.8.9] 在 org.elasticsearch.search.Searchservice.executequeryPhase(Searchservice.java:435) ~[elasticsearch-6.8.9.jar:6.8.9] 在 org.elasticsearch.action.search.SearchTransportservice$8.messageReceived(SearchTransportservice.java:376) ~[elasticsearch-6.8.9.jar:6.8.9] 在 org.elasticsearch.action.search.SearchTransportservice$8.messageReceived(SearchTransportservice.java:373) ~[elasticsearch-6.8.9.jar:6.8.9] 在 org.elasticsearch.xpack.security.transport.SecurityServerTransporTinterceptor$ProfileSecuredrequestHandler$1.doRun(SecurityServerTransporTinterceptor.java:250) ~[?:?] 在 org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-6.8.9.jar:6.8.9]
正在使用的高级客户端代码是官方文档中给出的常用代码-
final Scroll scroll = new Scroll(TimeValue.timeValueminutes(1L));
Searchrequest searchrequest = new Searchrequest(index_name);
searchrequest.scroll(scroll);
Search@R_607_9016@eBuilder search@R_607_9016@eBuilder = new Search@R_607_9016@eBuilder();
BoolqueryBuilder boolqueryBuilder = queryBuilders.boolquery();
if (StringUtils.isnotBlank(keyword)) {
LOG.info("Searching for keyword: {}",keyword);
boolqueryBuilder.must(queryBuilders.multiMatchquery(keyword,INDEXED_FIELDS));
}
if(StringUtils.isnotBlank(param1)) {
boolqueryBuilder.filter(queryBuilders.termquery("param1",param1));
}
if(Objects.nonNull(param1)) {
boolqueryBuilder.filter(queryBuilders.termsquery("param1",param1));
}
search@R_607_9016@eBuilder.query(boolqueryBuilder);
searchrequest.@R_607_9016@e(search@R_607_9016@eBuilder);
List<Object1> statuses = new ArrayList<>();
try {
SearchResponse searchResponse = clIEnt.search(searchrequest,requestoptions.DEFAulT);
String scrollID = searchResponse.getScrollID();
SearchHit[] searchHits = searchResponse.getHits().getHits();
while (searchHits != null && searchHits.length > 0) {
for (SearchHit hit : searchHits) {
Object1 agent = JsonUtil.parseJson(hit.get@R_607_9016@eAsString(),Object1.class);
statuses.add(agent);
}
SearchScrollrequest scrollrequest = new SearchScrollrequest(scrollID);
scrollrequest.scroll(scroll);
searchResponse = clIEnt.scroll(scrollrequest,requestoptions.DEFAulT);
scrollID = searchResponse.getScrollID();
searchHits = searchResponse.getHits().getHits();
}
ClearScrollrequest clearScrollrequest = new ClearScrollrequest();
clearScrollrequest.addScrollID(scrollID);
ClearScrollResponse clearScrollResponse = clIEnt.clearScroll(clearScrollrequest,requestoptions.DEFAulT);
Boolean succeeded = clearScrollResponse.isSucceeded();
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的Elasticsearch:我们开始使用 elasticsearch 高级客户端后高 CPU 使用率的模式全部内容,希望文章能够帮你解决Elasticsearch:我们开始使用 elasticsearch 高级客户端后高 CPU 使用率的模式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。