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. java中List按指定大小分割

    之前写过的代码,几个月后遇到类似的功能,感觉很熟悉,稍微费些劲也能做到,但是觉得有些不甘.明明之前整理好的为什么要重新做?百度参考其他人的思路感觉不是很顺心,个人原因吧.于是翻箱倒柜找出以前的代码,贴 ...

  2. page用法

    分页一般场景用于查询所有数据 包引用 import org.springframework.data.domain.Page;import org.springframework.data.domai ...

  3. Vue.js模板语法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. MHA(下)

    一.配置VIP漂移 主机名 IP地址(NAT) 漂移VIP 描述 mysql-db01 eth0:192.168.0.51 VIP:192.168.0.60 系统:CentOS6.5(6.x都可以) ...

  5. django学习:一些疑惑

    昨天学习了django的第二天,有一些收获. django的语法很严谨,看上去明明对齐的,但是他却提示说缩进不一致.后来我把前面的空全部删除,全部采用空格,这样就通过了,看样子还是要编程有一个好习惯, ...

  6. 深入理解Python字符编码

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

  7. HTML5 Canvas爱心时钟代码

    这是一款数字时钟动画,数字又多个小爱心组成,又何问起整理,随着时间推进,每一秒钟新数字替换旧数字,旧数字离去使用天女散花动画,花是五颜六色的. 查看效果:http://hovertree.com/te ...

  8. 前端axios下载excel(二进制)

    需求:通过后端接口下载excel文件,后端没有文件地址,返回二进制流文件 实现:axios(ajax类似) 主要代码: axios:设置返回数据格式为blob或者arraybuffer 如: var ...

  9. [LeetCode&Python] Problem 594. Longest Harmonious Subsequence

    We define a harmonious array is an array where the difference between its maximum value and its mini ...

  10. java语言基础--接口

    接口定义: 是一个特殊的抽象类,在接口里面的所有方法都是抽象的. 接口用interface来声明. 注意: 接口中只能出现常量和抽象方法: 接口里面没有构造方法,无法创建接口的对象: 接口和接口之间支 ...