【ES】--Elasticsearch的深度分页/内存超限等问题

目录

  • 一、ES存在哪些问题
  • 二、以上问题的解决方案

一、ES存在哪些问题

对于ES搜索,往往会有一系列的问题。
(1)、默认ES翻页到10000条之后,会报错:ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=Result window is too large, from + size must be less than or equal to: [10000] but was [10001].This limit can be set by changing the [index.max_result_window] index level setting.

(2)、查询的内容太大,超过内存限制,报错:entity content is too long [138159637] for the configured buffer limit [104857600]
----解决: 设置ES查询内容限制HeapBufferedResponseConsumerFactory。

(3)、如何提高ES搜索的内容?ES搜索是有分词功能,为了返回高精度的内容,要设置最低分数。

二、以上问题的解决方案

public void multiTableQuery(String searchContent,String knowledgeClassificationNo,String startTe,String endTe){BoolQueryBuilder boolBuilder = new BoolQueryBuilder();boolBuilder.should(getKnowledgeBoolBuilder(searchContent,knowledgeClassificationNo,startTe,endTe)); //查询索引1的搜索条件boolBuilder.should(getFileBoolBuilder(searchContent,knowledgeClassificationNo,startTe,endTe));//查询索引2的搜索条件SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();String[] includeFields = new String[] {};// 排除内部字段(更新时间,新建时间等)String[] excludeFields = new String[] {"content_type.create_user_sid", "content_type.create_name"};searchSourceBuilder.fetchSource(includeFields, excludeFields);searchSourceBuilder.query(boolBuilder);  //设置查询条件boolBuilder.should().forEach(k->{BoolQueryBuilder te = (BoolQueryBuilder)k;log.info("boolBuilder:{}", JSON.toJSONString(te.must()));});/*** trackTotalHits为true,只会返回10000条,在往后查询,会报错。* 这里为了防止深度分页导致报错,就选择trackTotalHits为false*///searchSourceBuilder.trackTotalHits(true);//设置高亮显示ElasticQueryBuilder.setHighlight(searchSourceBuilder);//设置分页 【这里限制查询到10000】int page =1,pageSize = 10000;int from = Math.max(0, (page - 1) * pageSize);pageSize = Math.min(1000, pageSize);pageSize = Math.max(1, pageSize);searchSourceBuilder.from(from);searchSourceBuilder.size(pageSize);/*** 设置最小查询分数* ES有分词,为了提高返回的结果,设置最低分数下限*/float minScore = 50; //这个按照50%匹配searchSourceBuilder.minScore(minScore);SearchRequest searchRequest = new SearchRequest();searchRequest.source(searchSourceBuilder);// es搜索try {//SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);/*** 单次查询,查询太大,容易超过限制,* 如报错 entity content is too long [138159637] for the configured buffer limit [104857600]*/RequestOptions.Builder queryBuilder = RequestOptions.DEFAULT.toBuilder();queryBuilder.setHttpAsyncResponseConsumerFactory(new HttpAsyncResponseConsumerFactory//修改为300MB.HeapBufferedResponseConsumerFactory(300 * 1024 * 1024));SearchResponse searchResponse = restHighLevelClient.search(searchRequest, queryBuilder.build());SearchHits hits = searchResponse.getHits();System.out.println("符合条件的总文档数量:" + hits.getTotalHits().value);hits.forEach(p -> {System.out.println("文档原生信息:" + p.getSourceAsString());System.out.println("高亮信息:" + p.getHighlightFields());
//            //获取高亮字段
//            Map<String, HighlightField> highlightFields = p.getHighlightFields();});for (SearchHit searchHit : hits.getHits()) {Map<String, Object> map = searchHit.getSourceAsMap();System.out.println("multiQuery:" + JSON.toJSONString(map));}}catch (Exception e){}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/231997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AttributeError: module ‘IPython.utils.traitlets‘ has no attribute ‘Unicode‘

format_type _traitlets.Unicode(_JAVASCRIPT_MODULE_MIME_TYPE) AttributeError: module ‘IPython.utils.traitlets’ has no attribute ‘Unicode’ 解决&#xff1a; …/python3.10/site-packages/google/colab/data_table.py 这里修改如下导包问题 # from IPython.utils…

零基础自学C语言|字符函数和字符串函数

在编程的过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;为了方便操作字符和字符串&#xff0c;C语言标准库中提供了一系列库函数&#xff0c;接下来我们就学习一下这些函数。 &#x1f4cc;字符分类函数 C语言中有一系列的函数是专门做字符分类的&#xff0c;也就…

mybatis框架的orm机制(类和数据库表的映射)

MyBatis框架之所以能够将数据库表映射到Java类&#xff0c;其核心原理是基于对象关系映射&#xff08;ORM&#xff09;。ORM是一种编程技术&#xff0c;用于在关系型数据库和面向对象编程语言之间建立映射关系&#xff0c;从而实现数据库表和对象之间的转换。 MyBatis实现映射…

对私域的认知,决定了你的私域能做多久!

现在&#xff0c;大部分企业对私域的认知是扭曲的。 比如&#xff0c;说到做私域&#xff0c;很多企业都是忙着往企业微信拉人&#xff0c;做自己的小程序商城来卖货。大多数企业就这样把私域当成了企业的独有“淘宝天猫”&#xff0c;这样做私域&#xff0c;可能会带来短期GM…

Flink系列之:Table API Connectors之Debezium

Flink系列之&#xff1a;Table API Connectors之Debezium 一、Debezium二、依赖三、使用Debezium Format四、可用元数据五、Format参数六、重复的变更事件七、消费 Debezium Postgres Connector 产生的数据八、数据类型映射 一、Debezium Debezium 是一个 CDC&#xff08;Chan…

在 Windows 上安装并配置 dig命令 的步骤

介绍&#xff1a;dig 是一个网络工具&#xff0c;通常在 Unix 和类 Unix 系统上使用&#xff0c;用于查询 DNS&#xff08;域名系统&#xff09;信息。它可以用来获取域名相关的信息&#xff0c;比如 IP 地址、域名服务器的记录等。你可以使用 dig 命令来进行域名解析、查找特定…

Spring之手写IoC

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

DALL-E 系列:AI绘画背后的惊人真相!!【1个离奇内幕、3个意想不到、5大秘密揭示】

DALL-E 系列&#xff1a;AI绘图原理&#xff0c;根据用户给出的描述&#xff0c;生成与描述相匹配的图像 DALL-E 1dVAETransformer DALL-E 2CLIP先验 priordecoder&#xff08;image&#xff09; DALL-E 3 论文地址&#xff1a;https://arxiv.org/pdf/2102.12092.pdf DALL-E 的…

Android 原始方法实现Tablayout样式

源码&#xff1a; 【免费】Android原始方法实现Tablayout样式资源-CSDN文库 推荐&#xff1a; GitHub - hackware1993/MagicIndicator: A powerful, customizable and extensible ViewPager indicator framework. As the best alternative of ViewPagerIndicator, TabLayout …

PowerShell实战(一)PowerShell使用ImportExcel模块轻松操作Excel

目录 一、介绍 二、安装模块 三、操作示例 1、导出excel 2、读取Excel数据 3、导出包含图表的Excel 4、导出包含汇总列和图表的Excel 一、介绍 ImportExcel模块可以理解为基于PowerShell环境操作Excel的强大类库&#xff0c;使用它可以在 Windows、Linux 和 Mac 上都可以使用。…

119. 杨辉三角 II

描述 : 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和 题目 : LeetCode 119. 杨辉三角 II : 119. 杨辉三角 II 分析 : 这道题用二维数组来做 . 解析 : class Solution {pub…

企微私域裂变:数字化时代的企业增长新引擎

在当前的数字化时代&#xff0c;企业面临着客户获取和转化的挑战。为了解决这一问题&#xff0c;企微私域裂变作为一种新型的营销策略&#xff0c;逐渐受到企业的关注。通过精细化的运营、深入的用户洞察和创新的裂变手段&#xff0c;企微私域裂变帮助企业快速拓展市场&#xf…

GPT-4V with Emotion:A Zero-shot Benchmark forMultimodal Emotion Understanding

GPT-4V with Emotion:A Zero-shot Benchmark forMultimodal Emotion Understanding GPT-4V情感:多模态情感理解的zero-shot基准 1.摘要 最近&#xff0c;GPT-4视觉系统(GPT-4V)在各种多模态任务中表现出非凡的性能。然而&#xff0c;它在情感识别方面的功效仍然是个问题。本文定…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring的AOP前奏

第一章 AOP前奏 1.1 代理模式 代理模式&#xff1a;我们需要做一件事情&#xff0c;又不期望自己亲力亲为&#xff0c;此时&#xff0c;可以找一个代理【中介】 我们【目标对象】与中介【代理对象】不能相互转换&#xff0c;因为是“兄弟”关系 1.2 为什么需要代理【程序中…

JavaScript中audio停止播放事件

在HTML中&#xff0c;使用JavaScript来控制<audio>元素的播放和停止。要停止播放音频&#xff0c;使用pause()方法。 以下是一个示例&#xff0c;展示了如何使用JavaScript来停止播放音频&#xff1a; <!DOCTYPE html> <html> <body><audio id&qu…

css+html横向滚动+固定宽

没什么好说的&#xff0c;快上代码&#xff01; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Do…

微服务实战系列之ZooKeeper(上)

前言 历经1个多月的创作和总结&#xff0c;纵观博主微服务系列博文&#xff0c;大致脉络覆盖了以下几个方面&#xff1a; 数据方面&#xff08;缓存&安全&#xff09; 比如Redis、MemCache、Ehcache、J2cache&#xff08;两级缓存框架&#xff09;、RSA加密、Sign签名…传…

Pycharm enable IntelliBot #patched后,工程无法打开

#本地环境# Pycharm&#xff1a;2023.12 Pro 对应robot pkg版本&#xff1a; robotframework 6.1 robotframework-databaselibrary 1.2.4 robotframework-pythonlibcore 4.1.2 robotframework-requests 0.9.4 robotframework-seleniumlibrary 6.1.…

各种不同语言分别整理的拿来开箱即用的8个开源免费单点登录(SSO)系统

各种不同语言分别整理的拿来开箱即用的8个开源免费单点登录&#xff08;SSO&#xff09;系统。 单点登录&#xff08;SSO&#xff09;是一个登录服务层&#xff0c;通过一次登录访问多个应用。使用SSO服务可以提高多系统使用的用户体验和安全性&#xff0c;用户不必记忆多个密…