ElasticSearch JavaAPI (SearchScroll)- search_context_missing_exception","re​​ason":"找不到 id 的搜索上下文

2024-05-02

我正在获取超过100k使用一个索引中的文档searchScroll并在所有字段中再添加一个字段100K文件。然后再次将这些文档插入到另一个新索引中。

我正在使用SearchScrollapi 也在设置大小searchSourceBuilder.size(100)我已将尺寸增加到searchSourceBuilder.size(1000)。在这两种情况下,处理后都会出现以下错误18100文档(当 searchSourceBuilder.size(100) 时)&21098文档(当 searchSourceBuilder.size(1000) 时)。

search_context_missing_exception","reason":"No search context found for id

并且,错误抛出在这一行searchResponse = SearchEngineClient.getInstance().searchScroll(scrollRequest);

请找到我完整的错误堆栈

Exception in thread "main" ElasticsearchStatusException[Elasticsearch exception
[type=search_phase_execution_exception, reason=all shards failed]]; nested: Elas
ticsearchException[Elasticsearch exception [type=search_context_missing_exceptio
n, reason=No search context found for id [388]]];
        at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestR
esponse.java:177)
        at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLeve
lClient.java:573)
        at org.elasticsearch.client.RestHighLevelClient.parseResponseException(R
estHighLevelClient.java:549)
        at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighL
evelClient.java:456)
        at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEn
tity(RestHighLevelClient.java:429)
        at org.elasticsearch.client.RestHighLevelClient.searchScroll(RestHighLev
elClient.java:387)
        at com.es.utility.DocumentIndex.main(DocumentIndex.java:101)
        Suppressed: org.elasticsearch.client.ResponseException: method [GET], ho
st [http://localhost:9200], URI [/_search/scroll], status line [HTTP/1.1 404 Not
 Found]
{"error":{"root_cause":[{"type":"search_context_missing_exception","reason":"No
search context found for id [390]"},{"type":"search_context_missing_exception","
reason":"No search context found for id [389]"},{"type":"search_context_missing_
exception","reason":"No search context found for id [392]"},{"type":"search_cont
ext_missing_exception","reason":"No search context found for id [391]"},{"type":
"search_context_missing_exception","reason":"No search context found for id [388
]"}],"type":"search_phase_execution_exception","reason":"all shards failed","pha
se":"query","grouped":true,"failed_shards":[{"shard":-1,"index":null,"reason":{"
type":"search_context_missing_exception","reason":"No search context found for i
d [390]"}},{"shard":-1,"index":null,"reason":{"type":"search_context_missing_exc
eption","reason":"No search context found for id [389]"}},{"shard":-1,"index":nu
ll,"reason":{"type":"search_context_missing_exception","reason":"No search conte
xt found for id [392]"}},{"shard":-1,"index":null,"reason":{"type":"search_conte
xt_missing_exception","reason":"No search context found for id [391]"}},{"shard"
:-1,"index":null,"reason":{"type":"search_context_missing_exception","reason":"N
o search context found for id [388]"}}],"caused_by":{"type":"search_context_miss
ing_exception","reason":"No search context found for id [388]"}},"status":404}
                at org.elasticsearch.client.RestClient$1.completed(RestClient.ja
va:357)
                at org.elasticsearch.client.RestClient$1.completed(RestClient.ja
va:346)
                at org.apache.http.concurrent.BasicFuture.completed(BasicFuture.
java:119)
                at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerI
mpl.responseCompleted(DefaultClientExchangeHandlerImpl.java:177)
                at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.process
Response(HttpAsyncRequestExecutor.java:436)
                at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.inputRe
ady(HttpAsyncRequestExecutor.java:326)
                at org.apache.http.impl.nio.DefaultNHttpClientConnection.consume
Input(DefaultNHttpClientConnection.java:265)
                at org.apache.http.impl.nio.client.InternalIODispatch.onInputRea
dy(InternalIODispatch.java:81)
                at org.apache.http.impl.nio.client.InternalIODispatch.onInputRea
dy(InternalIODispatch.java:39)
                at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputRead
y(AbstractIODispatch.java:114)
                at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseI
OReactor.java:162)
                at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEve
nt(AbstractIOReactor.java:337)
                at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEve
nts(AbstractIOReactor.java:315)
                at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(Ab
stractIOReactor.java:276)
                at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIO
Reactor.java:104)
                at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor
$Worker.run(AbstractMultiworkerIOReactor.java:588)
                at java.lang.Thread.run(Unknown Source)
Caused by: ElasticsearchException[Elasticsearch exception [type=search_context_m
issing_exception, reason=No search context found for id [388]]]
        at org.elasticsearch.ElasticsearchException.innerFromXContent(Elasticsea
rchException.java:490)
        at org.elasticsearch.ElasticsearchException.fromXContent(ElasticsearchEx
ception.java:406)
        at org.elasticsearch.ElasticsearchException.innerFromXContent(Elasticsea
rchException.java:435)
        at org.elasticsearch.ElasticsearchException.failureFromXContent(Elastics
earchException.java:594)
        at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestR
esponse.java:169)
        ... 6 more

请找到我的java代码:

public class DocumentIndex {

    private final static String INDEX = "documents"; 
    private final static String ATTACHMENT = "document_attachment"; 
    private final static String TYPE = "doc";
    private static final Logger logger = Logger.getLogger(Thread.currentThread().getStackTrace()[0].getClassName());

    public static void main(String args[]) throws IOException {


        RestHighLevelClient restHighLevelClient = null;

        Document doc=new Document();

        logger.info("Started Indexing the Document.....");

        try {
            restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"),
                    new HttpHost("localhost", 9201, "http")));
            } catch (Exception e) {
            System.out.println(e.getMessage());
        }


        //Fetching Id, FilePath & FileName from Document Index. 
        SearchRequest searchRequest = new SearchRequest(INDEX); 
        searchRequest.types(TYPE);
        final Scroll scroll = new Scroll(TimeValue.timeValueMinutes(1L)); //part of Scroll API
        searchRequest.scroll(scroll); //part of Scroll API
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        QueryBuilder qb = QueryBuilders.matchAllQuery();

        searchSourceBuilder.query(qb);
        searchSourceBuilder.size(100); 
        searchRequest.source(searchSourceBuilder);

        SearchResponse searchResponse = SearchEngineClient.getInstance().search(searchRequest);
        String scrollId = searchResponse.getScrollId(); //part of Scroll API
        SearchHit[] searchHits = searchResponse.getHits().getHits();
        long totalHits=searchResponse.getHits().totalHits;
        logger.info("Total Hits --->"+totalHits);

        //part of Scroll API -- Starts
        while (searchHits != null && searchHits.length > 0) { 
            SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId); 
            scrollRequest.scroll(scroll);
            searchResponse = SearchEngineClient.getInstance().searchScroll(scrollRequest);
            scrollId = searchResponse.getScrollId();
            searchHits = searchResponse.getHits().getHits();

            File all_files_path = new File("d:\\All_Files_Path.txt");
            File available_files = new File("d:\\Available_Files.txt");
            File missing_files = new File("d:\\Missing_Files.txt");


            int totalFilePath=1;
            int totalAvailableFile=1;
            int missingFilecount=1;

            Map<String, Object> jsonMap ;
            for (SearchHit hit : searchHits) {

                String encodedfile = null;
                File file=null;

                Map<String, Object> sourceAsMap = hit.getSourceAsMap();


                if(sourceAsMap != null) {  
                    doc.setId((int) sourceAsMap.get("id"));
                    doc.setApp_language(String.valueOf(sourceAsMap.get("app_language")));

                }

                String filepath=doc.getPath().concat(doc.getFilename());

                logger.info("ID---> "+doc.getId()+"File Path --->"+filepath);


                try(PrintWriter out = new PrintWriter(new FileOutputStream(all_files_path, true))  ){
                    out.println("FilePath Count ---"+totalFilePath+":::::::ID---> "+doc.getId()+"File Path --->"+filepath);
                }

                file = new File(filepath);
                if(file.exists() && !file.isDirectory()) {
                    try {
                          try(PrintWriter out = new PrintWriter(new FileOutputStream(available_files, true))  ){
                                out.println("Available File Count --->"+totalAvailableFile+":::::::ID---> "+doc.getId()+"File Path --->"+filepath);
                                totalAvailableFile++;
                            }
                        FileInputStream fileInputStreamReader = new FileInputStream(file);
                        byte[] bytes = new byte[(int) file.length()];
                        fileInputStreamReader.read(bytes);
                        encodedfile = new String(Base64.getEncoder().encodeToString(bytes));
                        fileInputStreamReader.close();
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    }
                }
                else
                {
                    System.out.println("Else block");
                    PrintWriter out = new PrintWriter(new FileOutputStream(missing_files, true));
                    out.println("Available File Count --->"+missingFilecount+":::::::ID---> "+doc.getId()+"File Path --->"+filepath);
                    out.close();
                    missingFilecount++;
                }

                jsonMap = new HashMap<>();
                jsonMap.put("id", doc.getId());
                jsonMap.put("app_language", doc.getApp_language());
                jsonMap.put("fileContent", encodedfile);

                String id=Long.toString(doc.getId());

                IndexRequest request = new IndexRequest(ATTACHMENT, "doc", id )
                        .source(jsonMap)
                        .setPipeline(ATTACHMENT);

                PrintStream printStream = new PrintStream(new File("d:\\exception.txt"));
                try {
                    IndexResponse response = SearchEngineClient.getInstance2().index(request);

                } catch(ElasticsearchException e) {
                    if (e.status() == RestStatus.CONFLICT) {
                    }
                    e.printStackTrace(printStream);
                }

                totalFilePath++;


            }


        }

        ClearScrollRequest clearScrollRequest = new ClearScrollRequest(); 
        clearScrollRequest.addScrollId(scrollId);
        ClearScrollResponse clearScrollResponse = restHighLevelClient.clearScroll(clearScrollRequest);
        boolean succeeded = clearScrollResponse.isSucceeded();
        ////part of Scroll API -- Ends

        logger.info("Indexing done.....");

    }

}

我使用ES 6.2.3版本


您收到该错误是因为您的搜索上下文在获取和处理所有结果之前已失效,因此为了解决此问题,您应该使搜索上下文保持更长时间的活动。请参考保持搜索上下文活跃 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html#scroll-search-context.

增加卷轴的时间价值。

new Scroll(TimeValue.timeValueMinutes(new_value));

将 new_value 增加到适合您的要求的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch JavaAPI (SearchScroll)- search_context_missing_exception","re​​ason":"找不到 id 的搜索上下文 的相关文章

  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分

随机推荐

  • iPhone 网络应用程序可以获取 GPS 位置吗?

    有没有一种简单的方法来设计一个网站来促进iphone用户提供gps网站坐标 我想知道表单字段是否有命名约定 例如 让用户以自动方式输入 我正在考虑建立一个基于位置的网站 并希望为 iPhone 和其他移动用户 量身定制 我意识到 iPhon
  • Android sqlite插入记录如果不存在

    我想将一个新项目 Cheese 添加到 sqlite 表中 但前提是它不存在 我的表中只有两列 id KEY ROWID PR 和product name KEY NAME PR 我一直在尝试使用这些代码 但它给了我一个错误 public
  • 如何通过点积获得峰值 CPU 性能?

    Problem 我一直在研究 HPC 特别是使用矩阵乘法作为我的项目 请参阅我的个人资料中的其他帖子 我在这些方面取得了不错的成绩 但还不够好 我退后一步 看看我在点积计算方面能做得如何 点积与矩阵乘法 点积更简单 并且允许我测试 HPC
  • 为什么允许 C++ 编译器优化具有副作用的内存分配?

    另一个问题讨论优化器删除调用的合法性new 编译器是否允许优化堆内存分配 https stackoverflow com questions 31873616 is the compiler allowed to optimize out
  • 在JPA、关系型数据库等中,什么是Tuple? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在研究 Hibernate 和 JPA 并且一直在寻找这个术语 有人可以用实用和说教的方式向我解释一下这个术语是什么 以及它与 J
  • 通过 ADF 将记录加载到 Dynamics 365

    我正在 Azure 数据工厂中使用 Dynamics 连接器 TLDR 此连接器是否支持加载需要传入父记录密钥的子记录 例如如果我想创建一个contact并将其附加到父级account 我更新插入一条带有 null 的记录contactid
  • TinyMCE 选择文本并使用 javascript 激活链接对话

    我正在尝试编写一个自动化 使用黄瓜 水豚 硒 测试 它将在tinymce框中选择一些文本 单击链接按钮 然后打开链接选择页面 但链接按钮仅在选择某些文本时才变为活动状态 所以第一轮 tinyMCE activeEditor selectio
  • 什么是 TEXTIMAGE_ON [PRIMARY]?

    我在很多桌子上工作过 所有桌子上都有这个东西 CREATE TABLE Persons id int IDENTITY 1 1 NOT NULL modified on datetime NULL modified by varchar 2
  • 错误:这些包与需求文件中的哈希值不匹配。更新 Django 时

    我有 Django 2 2 7 现在我想安装 Django 3 0 2 我读到我需要运行命令pip install U Django更新它 但是当我尝试时它显示此错误消息 ERROR THESE PACKAGES DO NOT MATCH
  • FxCop 文件夹丢失

    问题是什么 我正在尝试安装 FxCop 10 要安装它 需要 Microsoft Windows SDK 7 1 我安装了SDK 现在 要安装 FxCop 我必须运行 FxCopSetup exe 它应该位于文件夹 ProgramFiles
  • Swift - 如何隐藏导航项中的后退按钮?

    现在我有两个视图控制器 我的问题是我不知道如何在转换到第二个视图控制器后隐藏后退按钮 我发现的大多数参考资料都是 Objective C 的 我如何用 Swift 编写它 Objective C 中隐藏后退按钮代码 self navigat
  • Xcode:仅发布适用于 iPhone 的应用程序更新? [复制]

    这个问题在这里已经有答案了 我过去曾为 iPhone 和 iPad 制作过应用程序 但最新的更新仅适用于 iPhone 我换了Target Device Family to iPhone Only并存档和验证 但我收到错误 This bun
  • C++ 多重继承关闭同名运算符

    是否可以从两个不同的抽象类继承仅返回类型不同的同名运算符 如果是这样 他们 实现运算符的语法是什么 使用 解析运算符的语法是什么 与任何其他虚函数相同 一般情况下的开销是多少 如果您可以向我提供参考或示例代码 将会有所帮助 thanks 1
  • Python Peeweeexecute_sql() 示例

    我使用 Peewee 模块作为我的项目的 ORM 我看了整个文档 没有明确的 有关如何处理 db execute sql 结果的示例 我跟踪代码 只能发现db execute sql 返回游标 有谁知道如何处理光标 例如迭代它并获取 返回复
  • 为什么要输入两次密码?

    在大多数网站的注册用户部分 他们要求您输入密码两次 这是为什么 为什么不只输入一次密码 为什么一定要 确认 呢 You know Username Password Confirm password Submit 这件事在我心里已经有一段时
  • 让垂直网格线出现在 matplotlib 的线图中

    我想在绘图上同时获得水平和垂直网格线 但默认情况下仅显示水平网格线 我正在使用一个pandas DataFrame从 python 中的 sql 查询生成 x 轴上带有日期的线图 我不知道为什么它们没有出现在日期上 我试图寻找这个问题的答案
  • SyntaxError:多个异常类型必须用括号括起来

    我是初学者 在使用 python 安装 pycaw 进行音频控制后遇到问题 在放置 pycaw 的基本初始化代码时 出现以下错误 Traceback most recent call last File c Users volumeCont
  • 免费 DTD 到 XSD 转换实用程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 DTD 需要将其转换为 XSD XML 架构 文件 有免费的实用程序或简单的方法来完成此任务
  • 使用会员提供程序的用户和角色列表

    我正在尝试使用内置的会员资格提供程序生成一个视图来显示用户列表及其角色 我的模型和控制器正在获取用户和角色 但我无法在视图中显示它们 Model public class AdminViewModel public MembershipUs
  • ElasticSearch JavaAPI (SearchScroll)- search_context_missing_exception","re​​ason":"找不到 id 的搜索上下文

    我正在获取超过100k使用一个索引中的文档searchScroll并在所有字段中再添加一个字段100K文件 然后再次将这些文档插入到另一个新索引中 我正在使用SearchScrollapi 也在设置大小searchSourceBuilder