ES查询 too_many_clauses,maxClauseCount is set to 5000

news2025/1/8 6:43:42

一:语法执行背景


ES boo查询中过多的拼接bool导致报maxClauseCount is set to 5000

{

  • "caused_by": {
    • "type": "too_many_clauses",
    • "reason": "maxClauseCount is set to 5000"
    }

}

查询DSL语句:

 {
  "from": 0,
  "size": 20,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": {
              "query": "普通硅酸盐水泥(P·O)",
              "boost": 5
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  },
  "min_score": 5,
  "sort": [
    {
      "_score": {
        "order": "desc"
      }
    }
  ]
}

二:分析原因

报错原因:是Search限制一个bool查询中最多只能有5000个值或子查询,当超过5000时,会抛出异常。

实际原因:name字段使用的分词器使用了同义词,导致“普通硅酸盐水泥(P·O) 42.5级”,被识别成了“水泥,复合硅酸盐水泥(P·O) 42.5级,普通硅酸盐水泥(P·O) 42.5级”,再经过分词器分词之后,会出现很多个term,导致查询bool超过限制。

 三:解决办法

方案一:当超过5000时可以将一个bool查询拆成两个子bool查询,使用must关键字,使得两个子bool查询是与的关系。【拆分要去优化的查询语法,本次未实验

方案二:编辑elasticsearch.yml,添加如下配置 index.query.bool.max_clause_count: 10240 注意:必须在最前面添加一个空格,即和其他配置首字母对齐,不然es启动报错。 

【随着数据量的增大,其实这个值会不断的需要改大,我就是从0改到1000改到5000又触发了】

 方案三:由于索引分词使用了同义词,可以将查询分词和索引分词分开,单独设置查询分词。因为如果我们查询时不传入分词器,则默认会用索引词的分词器,同义词的分词器一般都很大,如下图:

 

 {
  "from": 0,
  "size": 20,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": {
              "query": "普通硅酸盐水泥(P·O)",
              "analyzer": "ik_max_word",
              "boost": 5
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  },
  "min_score": 5,
  "sort": [
    {
      "_score": {
        "order": "desc"
      }
    }
  ]
}

 这种方式是治本模式,发现哪几个词出现了子查询超出,就对这几个词单独处理,当然这几个词也会丢失同义词的匹配算法,但是我们可以加入完整匹配权重。

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

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

相关文章

问题解决:微信开发者工具显示清除登录状态失败 TypeError: Failed to fetch [1.06.2303220][win32-x64]

问题: 在编译之前,会进行清除全部缓存操作,但是点击后出现清除清除登录状态失败。 清除登录状态失败 TypeError: Failed to fetch [1.06.2303220][win32-x64]原因: 未连接网络,或者被你连接的网络拦截。 解决&#xf…

基于 PaddleVideo 的花滑骨骼点动作识别 2s-AGCN

配置文件节点流配置文件 2s-agcn_ntucs_joint_fsd.yamlMODEL 字段DATASET 字段PIPELINE 和 INFERENCE 字段OPTIMIZER 字段 agcn2s.pygraph输入通道数 骨骼流 Dataset 和 Pipeline配置文件DATASETPIPELINE 源码skeleton.pyskeleton_pipeline.pyAutoPaddingSkeletonNormIdenSkete…

springboot+vue高校学科建设资源管理系统

本 1、数据库的构建:数据库需求分析根据所需要实现的功能,对其数据库的需求进行分析。 2、后台管理:网站后台是给管理员用作管理网站内容的操作界面,它是网站日常维护,网站内容操作的交互窗口,是完成网站后…

JS逆向系列之猿人学爬虫第9题-动态cookie2

文章目录 目标参数流程分析js代码Python调用测试目标 https://match.yuanrenxue.cn/match/9参数流程分析 二次请求cookie携带m 第一次请求响应内容格式化之后是这样的: < body > < script src = "/static/match/safety/match9/udc.js" > <

Axure教程—表格(中继器)

本文将教大家如何用AXURE中的中继器制作表格 一、效果介绍 如图&#xff1a; 预览地址&#xff1a;https://oc3e6a.axshare.com 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87854863?spm1001.2014.3001.5501 二、功能介绍 可以在表格中插入…

1729_c语言中全局变量与局部变量以及形参重名问题

全部学习汇总&#xff1a; GreyZhang/c_basic: little bits of c. (github.com) 欢迎路过的YUAN类朋友相互交流&#xff0c;以下是我的联系方式&#xff1a; Email&#xff1a;greyzhang126.com 微信&#xff1a;grey0612 C语言中烦人变量命名冲突时会有怎么样的处理机制&…

sql_server数据库入门学习(一)

&#x1f3ac; 博客主页&#xff1a;博主链接 &#x1f3a5; 本文由 M malloc 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f384; 学习专栏推荐&#xff1a;LeetCode刷题集&#xff01; &#x1f3c5; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指…

react-native-vector-icons 安卓和ios 安装

npm install --save react-native-vector-icons ios 将node_modules/react-native-vector-icons/Fonts的文件夹里的内容复制到项目的ios/Fonts文件夹下 选择Ios/Fonts/里的内容 点开Ifon.plist文件&#xff0c;并在右侧添加一项"Fonts provided by application" 在…

(学习日记)2023.04.25

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

[SpringBoot]Knife4j框架Knife4j的显示内容的配置

目录 Knife4j框架 使用 添加依赖&#xff1a;knife4j-spring-boot-starter&#xff0c;版本2.0.9 添加配置&#xff1a;在配置文件中添加knife4j.enable属性的配置&#xff0c;取值为true 添加配置类&#xff1a;类的代码相对固定 访问 Knife4j的显示内容的配置 Knife4j…

赶紧收藏!2023年成人高考【复习大纲】

▶高起点考试题型 高起点-语文 试卷满分为150分。考试用时120分钟。 >>>考试内容&#xff1a; 语言知识及运用、现代文阅读、古代诗文阅读和鉴赏、写作四个方面&#xff0c;考试以测试阅读和写作能力为重点。 >>>备考分析&#xff1a; 语文学习要注意平…

【Python】实现一个类似于Thief的摸鱼软件

一 背景说明 之前用Thief摸鱼(Thief官网&#xff09;&#xff0c;觉得挺好用。对于其最基本的TXT摸鱼&#xff0c;准备在Python中扩展一下功能&#xff0c;使其能够通过爬虫&#xff0c;支持爬取热门小说网站的内容。 软件已经开源到&#xff1a;MoFish软件开源地址 功能是&…

ReID专栏(一) 任务与数据集概述

前言 本专栏针对Closed-world的ReID任务&#xff0c;首先介绍本任务的目标与主要数据集&#xff0c;包括行人重识别、跨模态行人重识别与车辆重识别。然后从三类表征学习的角度解读相关论文&#xff0c;表征学习是本任务的核心&#xff0c;大量重识别工作都致力于提高表征学习的…

uboot源码结构、配置、编译

目录 1.uboot源码结构 1.1uboot源码获取 1.2 uboot的特点 1.3 uboot源码结构 2、uboot配置与编译 2.1uboot配置 2.2 uboot编译 1.uboot源码结构 1.1uboot源码获取 uboot是一个开源的软件。开源有两层含义。一是可以免费用、二是开放源代码 uboot源码下载 http://www.denx…

记一次线上MQ堆积问题处理

背景 线上订单服务10个POD节点&#xff0c;某kafka tpoic原有6个分区。 问题现象 上午11.30左右一波下单高峰&#xff0c;根据分布式消息告警发现有少量消息堆积&#xff0c;但是堆积量不大&#xff0c;持续几分钟后恢复正常。 下午1点后出现新一轮高峰&#xff0c;出现了大…

window环境安装kafka

一、配置系统环境变量 JAVA_HOME 二、配置安装zookeeper 1、下载安装包 https://zookeeper.apache.org/releases.html#download 2、 解压并进入ZooKeeper目录&#xff0c;如&#xff1a;D:\kafka\zookeeper\conf, 将“zoo_sample.cfg”重命名为“zoo.cfg”, 3、打开“zoo.c…

机器学习集成学习——GBDT(Gradient Boosting Decision Tree 梯度提升决策树)算法

系列文章目录 机器学习神经网络——Adaboost分离器算法 机器学习之SVM分类器介绍——核函数、SVM分类器的使用 机器学习的一些常见算法介绍【线性回归&#xff0c;岭回归&#xff0c;套索回归&#xff0c;弹性网络】 文章目录 系列文章目录 前言 一、GBDT(Gradient Boos…

PHP学习笔记第三天

前言 作者简介&#xff1a;不知名白帽&#xff0c;网络安全学习者。 博客主页&#xff1a;不知名白帽的博客_CSDN博客-网络安全,CTF,内网渗透领域博主 网络安全交流社区&#xff1a;https://bbs.csdn.net/forums/angluoanquan 目录 PHP if..else PHP switch PHP数组 PHP数…

【AI 孙燕姿 || AI 音色转换】RVC 使用图文教程:教你如何实现无难度男女换声(伪音)以及 AI 孙燕姿!

最近&#xff0c;视频网站音乐区up主掀了“AI孙燕姿”的风潮。这种使用AI技术提取某位歌手的音色&#xff0c;再用其替换另一位歌手音色的方式&#xff0c;可以实现接近歌手本人翻唱的逼真效果。除孙燕姿外&#xff0c;面对周杰伦、陶喆、陈奕迅、王菲等众多具有独特嗓音的歌手…

YOLOv3: An Incremental Improvement 全文翻译

YOLOv3 论文全篇完整翻译 摘要 本文介绍了YOLO的一些更新内容&#xff01;我们进行了一系列小的设计改进&#xff0c;以使其更好。我们还训练了一个相当不错的新网络。它比上一版稍微大一些&#xff0c;但更加准确。不过不用担心&#xff0c;它依然保持了快速性能。在320320像…