1、TooManyClause

我们在使用terms query、prefix query、fuzzy query、wildcard query、range query的时候,一不小心就会遇到TooManyClause异常。这个异常是提醒我们查询子句太多了(超过默认阈值1024),而上面这类查询最终都会解析成BooleanQuery。例如:prefix query前缀匹配t*,解析后会将字典中所有以t开头的term全部匹配出来,然后用OR连接构成一个BooleanQuery。这种情况下就很容易发生TooManyClause异常。

2、处理方案

ES默认设置一个查询语句最多1024个子句,主要是对内存和性能的保障,如果遇到这个异常我们应该如何处理?

2.1 从业务角度控制查询语句的“规模”

例如拼接大量的OR查询子句,从业务角度进行缩减。

2.2 用filter替换query

terms query -> terms filter

prefix query -> prefix filter

fuzzy query -> N/A

wildcard query -> N/A

range query -> range filter

2.3 使用filter没有相关性得分,如果有相关性排序的需求,就得修改ES的默认配置

indices.query.bool.max_clause_count: 5000

参考:

Setting the BooleanQuery maxClauseCount in ElasticSearch

ES - 处理TooManyClause异常的更多相关文章

  1. 解决ES集群状态异常教程(存在UNASSIGNED)

    解决ES集群状态异常教程(存在UNASSIGNED)_百度经验 https://jingyan.baidu.com/article/9158e00013f787a255122843.html

  2. ES 客户端 RestHighLevelClient Connection reset by peer 亲测有效 2022-11-05

    导读 最新公司ES集群老出现连接关闭,进而导致查询|写入ES时报错,报错日志显示如下 [2m2022-10-23 14:13:10.088[0;39m - [31mERROR[0;39m - [35m ...

  3. Elasticsearch 集群和索引健康状态及常见错误说明

    之前在IDC机房线上环境部署了一套ELK日志集中分析系统, 这里简单总结下ELK中Elasticsearch健康状态相关问题, Elasticsearch的索引状态和集群状态传达着不同的意思. 一.  ...

  4. Lucene 4.X 全套教程

    http://www.cnblogs.com/forfuture1978/category/300665.html Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和 ...

  5. ElasticSearch集群故障案例分析: 警惕通配符查询

    最近ElasticSearch集群出现了 https://elasticsearch.cn/article/171 文章中描述的情况,现在转载全文警示下自己. 许多有RDBMS/SQL背景的开发者,在 ...

  6. 贷前系统ElasticSearch实践总结

    贷前系统负责从进件到放款前所有业务流程的实现,其中涉及一些数据量较大.条件多样且复杂的综合查询,引入ElasticSearch主要是为了提高查询效率,并希望基于ElasticSearch快速实现一个简 ...

  7. 26.bulk批量操作

    主要知识点 1.bulk语法 2.bulk使用时的注意事项 3.bulk size 对es性能的影响     一.bulk语法 每一个操作要两个json串(delete操作除外),每个json串占一行 ...

  8. springboot2.0整合es的异常总结

    异常: availableProcessors is already set to [4], rejecting [4] 在启动类中加入 System.setProperty("es.set ...

  9. 您好,python的请求es的http库是urllib3, 一个请求到贵司的es节点,想了解下,中间有哪些网关啊?冒昧推测,贵司的部分公共网关与python-urllib3的对接存在异常?

    您好,python的请求es的http库是urllib3, 一个请求到贵司的es节点,想了解下,中间有哪些网关啊?冒昧推测,贵司的部分公共网关与python-urllib3的对接存在异常? 负载均衡( ...

随机推荐

  1. oracle 表空间不足处理

    linux环境将*.dmp文件导入数据库时,df  -h 发现测试环境虚拟机空间不足,而数据文件xxx.dbf所占空间达到40G左右,果断删除表空间重建在导入. 一.查出存储数据表空间名称 selec ...

  2. 制作一个老旧C118的GSM便携式测试设备

    对于OsmocomBB也是被国内外大神玩得不亦乐乎.什么重定向攻击,中间人攻击.都是N年前的东西咯.当然鄙人不会这些.对于地下市场无非就是获取对方短信小则“老.虎.机”,大则支付宝.某日翻了翻“咸”鱼 ...

  3. 添加宿主为控制台应用程序的WCF服务

    1.创建WCF服务库:WcfServiceLibrary,根据自动创建的代码修改自己的WCF 服务协议.操作协议.数据协议.本次先实现简单的WCF最基本的通信方式:请求->应答模式. 定义服务. ...

  4. topological sort

    A topological sortof a dag G  is a linear ordering of all its vertices such that if G contains anedg ...

  5. Python 多进程和多线程的效率对比

    import time from threading import Thread from multiprocessing import Process def f1(): # time.sleep( ...

  6. C\C++控制台程序隐藏方法总结

    学习计算机,往往先从Windows环境下学习编程,学习编程,往往从C学起,学习C,往往又从控制台程序学习,何为控制台,就是那个黑框白字的界面.对于这样一个最初认为奇陋无比而现在认为无所不能的编程平台, ...

  7. Spring AOP选择切点的问题

    先上代码: /** * 管理员登录方法的切入点 */ @Pointcut("execution(* com.arch.shiro.realm.UserRealm.doGetAuthentic ...

  8. Python基础学习总结(持续更新)

    https://www.cnblogs.com/jin-xin/articles/7459977.html 嗯,学完一天,白天上班,眼睛要瞎了= = DAY1 1,计算机基础. CPU:相当于人的大脑 ...

  9. 深入理解Python字符编码

    不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...

  10. 【TLV】非递归TLV数据解析

    #include <stdio.h> #define X_LEN_OF_TAG_MAX ( 2 ) #define X_LEN_OF_LEN_MAX ( 2 ) struct st_tlv ...