首页 > 其他分享 >SearchContextMissingException: No search context found for id [xx] 问题排查

SearchContextMissingException: No search context found for id [xx] 问题排查

时间:2022-08-28 12:44:16浏览次数:92  
标签:search java SearchContextMissingException No id elasticsearch org scroll

背景

需要将存放在ES系统中的IMEI信息,将全量的数据分批拉取结果集到另外的系统,处理流程大抵就是先调用ES的查询方法,Scroll查询每批次10000条数据,得到数据集合后,在转换成自己系统需要的信息,最后插入到数据库,然后再通过scrollId进行下一次的查询。

但是有的时候会报下面的问题,我观察后发现,都是在处理一些大数据量的时候查询条件时,因为要入库,可能耗时比较多一些,而期初我们的setScroll中的过期时间比较短导致的。

 

DEBUG!!default!![2022-08-28 20:11:06,432][DEBUG][action.search.type       ] [<Query Node Name>] [27419] Failed to execute fetch phase
org.elasticsearch.transport.RemoteTransportException: [<Data Node Name>][inet[/xx.x.x.xxx:9300]][search/phase/fetch/id]
Caused by: org.elasticsearch.search.SearchContextMissingException: No search context found for id [27419]
    at org.elasticsearch.search.SearchService.findContext(SearchService.java:481)
    at org.elasticsearch.search.SearchService.executeFetchPhase(SearchService.java:451)
    at org.elasticsearch.search.action.SearchServiceTransportAction$SearchFetchByIdTransportHandler.messageReceived(SearchServiceTransportAction.java:793)
    at org.elasticsearch.search.action.SearchServiceTransportAction$SearchFetchByIdTransportHandler.messageReceived(SearchServiceTransportAction.java:782)
    at org.elasticsearch.transport.netty.MessageChannelHandler$RequestHandler.run(MessageChannelHandler.java:275)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)

 

scroll分页流程

使用ES搜索,当请求返回单个“页面”的结果时,scroll API可用于从单个搜索请求中检索大量结果(甚至所有结果),其方式与在传统数据库中使用光标的方式大致相同。

Scroll滚动不是为了实时用户请求,而是为了处理大量数据,例如为了将ES集群中的数据同步到另外的系统中去。

这个Scroll是一个快照,ES内部在这个快照中会保存于此相关的上下文信息,快照是非实时的信息。

为了使用scroll,初始搜索请求应该在查询字符串中指定scroll参数,它告诉elasticsearch它应该保持“搜索上下文”活动多长时间(参见保持搜索上下文活动)

第二次请求的时候需要带上第一次返回回来的scrollId,后面的每次查询都需要带上这个scroll_id,不过这个有时效性,超过了一定时间Scroll的搜索上下文search context alive就失效了。

结果

跟进后发现这个报错来自游标查询。之所以会出现这个报错,是由于时间已经超过游标当时设置的时间,scroll超时后自动删除了,所以才会提示:“No search context found for id”。

解决办法也简单,要么增大游标的有效时间,要么缩短获取数据后的处理时间。

setScroll()里传入的时间,表示一次处理setSize()里的数据超时时间。即处理一个分页最长不超过的时间。从你获取结果,处理请求到下一次遍历结果时间在5分钟之内即可,下面的代码表示5分钟。

   /**
     * scroll有效时间
     */
    public final static TimeValue SCROLL_KEEP_ALIVE = TimeValue.timeValueMinutes(5);

    /**
     * 300s 超时
     */
    public final static TimeValue TIMEOUT_5_MINUTES = TimeValue.timeValueSeconds(300);	// 300s 超时

    SearchResponse response = client.prepareSearchScroll(scrollId).setScroll(SCROLL_KEEP_ALIVE).execute().actionGet(TIMEOUT_5_MINUTES);

  

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。

首发链接:https://www.cnblogs.com/lingyejun/p/16632561.html

标签:search,java,SearchContextMissingException,No,id,elasticsearch,org,scroll
From: https://www.cnblogs.com/lingyejun/p/16632561.html

相关文章

  • P1003 [NOIP2011 提高组] 铺地毯 题解
    题目传送门[NOIP2011提高组]铺地毯题目描述为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有\(n\)......
  • The Economist posts each week's new content online at approximately 21:00 Thursd
    EachofTheEconomistissues'officialdaterangeisfromSaturdaytothefollowingFriday.TheEconomistpostseachweek'snewcontentonlineatapproximatel......
  • 【解决步骤】TortoiseGitPlink Fatal Error:No supported authentication methods avai
    解决步骤打开TortoiseGit的设置,点击网络,然后更改SSH客户端的路径为Git的:  默认情况下TortoiseGit的SSH客户端时TortoiseGitPlink,这个好像在很多情况下都无法正常工作......
  • NOI2022 游记
    NOI2022游记目录NOI2022游记08120820082108220823082408250826感觉还是应该写点游记什么的东西,不然可能到明年我高二退役的时候发现信竞相关的回忆都忘光光了。开始写......
  • 长城杯2022 known_phi
    InvolvedKnowledge已知phi,n分解nDSAK共享攻击DescriptionfromCrypto.Util.numberimportgetPrime,bytes_to_long,inverse,long_to_bytesfromCrypto.P......
  • Cannot resolve org.springframework.cloud:spring-cloud-starter-netflix-eureka-ser
    Cannotresolveorg.springframework.cloud:spring-cloud-starter-netflix-eureka-server:unknown前言:启动eureka项目,发现右侧maven中的项目dependencies报红,reimport也......
  • node-sass 安装出错常见解决方法
    使用与node-sass版本兼容的node到package.json中找到node-sass的版本号。使用nvm将node切换到与node-sass版本兼容的版本(sass/node-sass有版本对照表)。......
  • NOI2022 VP寄
    Day-?由于我特别菜,去年NOIP寄成了158,今年省选遇上疫情,分数线提到了210,所以省选寄了,NOI2022D类梦也寄了。8月26日晚上拿到了两天的pdf和day1的数据,准备VP......
  • DropEdge: Towards Deep Graph Convolutional Networks on Node Classification
    目录概符号说明本文方法代码RongY.,HuangW.,XuT.andHuangJ.DropEdge:towardsdeepgraphconvolutionalnetworksonnodeclassification.InInternational......
  • P7961 [NOIP2021] 数列
    题目描述给定整数\(n,m,k\),和一个长度为\(m+1\)的正整数数组\(v_0,v_1,\ldots,v_m\)。对于一个长度为\(n\),下标从\(1\)开始且每个元素均不超过\(m\)的......