ES報錯:解決too_many_clauses: maxClauseCount is set to 1024 報錯問題

解決too_many_clauses: maxClauseCount is set to 1024 報錯問題

    • 問題場景
    • 報錯信息
    • 問題分析解決
      • 1. 優化查詢
      • 2. 增加maxClauseCount
      • 3. 改用其他查詢類型
      • 修改后的查詢示例

問題場景

查詢語句:查詢clcNo分類號包含分類O的所有文檔

{"match_phrase_prefix": {"clcNo": {"query": "O","analyzer": "standard","slop": 0,"max_expansions": 10000,"boost": 10.0}}
}

報錯信息

{"took": 12,"responses": [{"error": {"root_cause": [{"type": "exception","reason": "Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed]","phase": "query","suppressed": [{"type": "exception","reason": "Elasticsearch exception [type=too_many_clauses, reason=too_many_clauses: maxClauseCount is set to 1024]"}]}],"type": "exception","reason": "Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed]","phase": "query","suppressed": [{"type": "exception","reason": "Elasticsearch exception [type=too_many_clauses, reason=too_many_clauses: maxClauseCount is set to 1024]"}]},"status": 500}]
}

問題分析解決

從報錯信息來看,查詢出現了too_many_clauses錯誤,這是因為使用的match_phrase_prefix或者in以及其他的查詢生成的子句數量超過了Elasticsearch的默認限制(1024個子句)。我這里的錯誤是由于使用match_phrase_prefix可能擴展為大量詞條的查詢中超過了限制

可以嘗試通過以下幾種方式來解決這個問題:

  1. 優化查詢:減少查詢中使用的子句數量
  2. 增加maxClauseCount:增加Elasticsearch中允許的最大子句數量
  3. 改用其他查詢類型:使用性能更好的查詢類型

1. 優化查詢

嘗試減少子句數量,優化子句的查詢數量,使得能減少到1024的個數限制

2. 增加maxClauseCount

如果確實需要大量的子句,可以增加Elasticsearch中的maxClauseCount限制。可以通過以下步驟來增加:

  • 修改Elasticsearch7.x配置文件 (elasticsearch.yml):

    indices.query.bool.max_clause_count: 2048
    
  • 或者通過Elasticsearch的API動態更新設置(這個我沒嘗試,而且可能只是臨時的):

    curl -X PUT "localhost:9200/_settings" -H 'Content-Type: application/json' -d '{"index" : {"query" : {"bool" : {"max_clause_count" : 2048}}}
    }'
    

3. 改用其他查詢類型

如果前兩種方法不可行,考慮使用性能更好的查詢類型,比如prefix查詢。雖然prefix查詢不如match_phrase_prefix查詢精確,但它性能更好,并且不會產生過多的子句。

修改后的查詢示例

這里是一個優化后的查詢示例,將match_phrase_prefix替換為prefix查詢,并減少inner_hits的數量:

  {"prefix": {"clcNo": {"value": "O","boost": 10.0}}}

以上修改包括:

  1. 使用prefix查詢替代match_phrase_prefix查詢。
  2. 降低inner_hits的數量,以減少子句數量。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36432.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36432.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36432.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

社會與網絡的討論#1

“拒絕心靈雞湯” 都說人人平等,那請問一個有錢人看到一個掃大街的,能有幾個保證不產生厭惡感的? 你能確保,你的工資會比有關系的人的工資高嗎? 你進入公司,有有關系的人進入的方便嗎? 在學…

特產零售元宇宙:探索虛擬世界的商業機遇

在數字化時代,元宇宙作為一個全新的虛擬世界,正在逐漸改變我們的生活方式和商業模式。隨著技術的不斷發展,特產零售業也開始嘗試進入這個充滿無限可能的新領域。本文將探討特產零售元宇宙的概念、優勢以及面臨的挑戰,并分析其未來…

WAIC2024 | 華院計算邀您共赴2024年世界人工智能大會,見證未來科技革新

在智能時代的浪潮洶涌澎湃之際,算法已成為推動社會進步的核心力量。作為中國認知智能技術的領軍企業,華院計算在人工智能的廣闊天地中,不斷探索、創新,致力于將算法的潛力發揮到極致。在過去的時日里,華院計算不斷探索…

Java - Execl自定義導入、導出

1.需求:問卷星答 下圖框出區域,為用戶自定義字段問題及答案 2.采用技術EasyExcel 模板所在位置如下 /*** 導出模板** param response*/ Override public void exportTemplate(HttpServletResponse response) throws IOException {ClassPathResource c…

Metricbeat和Prometheus監控比較

Metricbeat和Prometheus是兩種常見的監控工具,它們都有收集和存儲系統和應用程序性能數據的功能,但它們的設計理念、實現方式和適用場景有所不同。以下是它們的相同點和不同點的詳細比較: 相同之處 數據收集: Metricbeat 和 Pro…

vue 使用 face-api.js 實現人臉識別

HTML 代碼如下 <div class="videoBox" id="videoBox"><video ref="videoPlayer" width="800" height="600" autoplay muted playsinline></video><canvas ref="overlay"></canvas>…

配置 Cmder 到鼠標右鍵

win Q 快捷鍵搜索 cmd&#xff0c;以管理員身份運行 在命令行輸入 cmder.exe /REGISTER ALL

OpenCloudOS開源的操作系統

OpenCloudOS 是一款開源的操作系統&#xff0c;致力于提供高性能、穩定和安全的操作系統環境&#xff0c;以滿足現代計算和應用程序的需求。它結合了現代操作系統設計的最新技術和實踐&#xff0c;為開發者和企業提供了一個強大的平臺。本文將詳細介紹 OpenCloudOS 的背景、特性…

品牌進行3D數字化轉型,有哪些優勢?

各行業都在經歷著從增量市場向存量市場的轉變&#xff0c;同時用戶的消費觀念也日趨成熟&#xff0c;更加注重產品的體驗和服務質量。 無論是線上購物平臺還是線下實體門店&#xff0c;提供個性化和增強體驗感的產品與服務已成為未來發展的核心驅動力&#xff0c;品牌轉型也迫…

SyncFolders文件備份—辦公人員必備

SyncFolders支持在兩個或多個文件夾之間同步文件&#xff0c;用戶可以將重要文件同步到多個位置&#xff0c;如備份硬盤、網絡共享文件夾或云存儲等。通過設定同步規則&#xff0c;可以自動備份和同步更新&#xff0c;減少手動操作的繁瑣&#xff0c;確保文件的安全和可訪問性。…

uniapp橫屏移動端卡片縮進輪播圖

uniapp橫屏移動端卡片縮進輪播圖 效果&#xff1a; 代碼&#xff1a; <!-- 簡單封裝輪播圖組件:swiperCard --> <template><swiper class"swiper" circular :indicator-dots"true" :autoplay"true" :interval"10000&quo…

標準庫STL

標準庫STL stringstreamvector自定義類型初始化為一個數 queue stringstream 頭文件sstream。格式化字符流 #include <iostream> #include <sstream> using namespace std; int main(){stringstream ss;// hex 以十六進制保存 oct是8進制ss <<89<<…

軟件必須要進行跨瀏覽器測試嗎?包括哪些內容和注意事項?

隨著互聯網的普及和發展&#xff0c;用戶對軟件的要求越來越高。無論是在臺式機、筆記本還是移動設備上&#xff0c;用戶都希望能夠以最好的體驗來使用軟件。然而&#xff0c;不同的瀏覽器在解析網頁的方式、支持的技術標準等方面存在差異&#xff0c;這就導致了同一個網頁在不…

fpga bitstream userid

fpga version register # xdc 文件 set_property BITSTREAM.CONFIG.USERID "0xDEADC0DE" [current_design] set_property BITSTREAM.CONFIG.USR_ACCESS 0x66669999 [current_design]ug908 在bit下載之后的property可以看到 &#xff0c;GUI里面Tools → Edit Devic…

QT項目實戰:拼圖小游戲

一、拼圖智益-經典游戲&#xff08;開發環境&#xff09; 1&#xff1a;操作系統&#xff1a;Windows 10 x64專業版。 2&#xff1a;開發工具&#xff1a;Qt 5.12.8。 二、拼圖智益-經典游戲&#xff08;功能模塊&#xff09; 1&#xff1a;功能模塊1&#xff1a;游戲啟動…

1.1電路模型

1.1電路模型 任何實際電路由以下三部分組成&#xff1a; ①提供電能的能源 – 電源 ②用電裝置 – 負載 ③傳輸電能的金屬連線 – 導線 實際電路完成的功能&#xff1a;主要有以下兩個方面&#xff1a; &#xff08;1&#xff09;進行能量的產生、傳輸和轉換。&#xff08;如…

flash申請內存失敗,導致老化問題解決

背景 在閃光燈初始化階段客制化了一個buffer&#xff0c;下發到kernel的閃光燈驅動中用于保存讀取閃光燈寄存器的值。功能測試都是正常的&#xff0c;但是一旦開始批量跑產線老化測試會有1/4500左右概率的后主攝拍照卡住。定位根因是閃光燈初始化失敗&#xff0c;進一步原因就…

Django實現博客標簽字符串拆分功能

在Django模板中&#xff0c;可以使用自定義的模板過濾器來實現字符串的拆分。以下是一個簡單的示例&#xff0c;演示如何根據特定的分隔符拆分字符串并在模板中顯示。 首先&#xff0c;在Django應用的templatetags目錄中&#xff0c;創建一個Python模塊&#xff0c;例如extras…

C++中的網絡協議和網絡框架TCP和HTTP

一.OSI七層網絡模型 即開放式系統互連。 一般都叫OSI參考模型&#xff0c;是ISO組織在1985年研究的網絡互連模型。該體系結構標準定義了網絡互連的七層框架&#xff08;物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層&#xff09;&#xff0c;即OSI開放系統互連…

牛筋面,一口難忘的勁道滋味

在眾多的平涼美食中&#xff0c;牛筋面以其獨特的口感和豐富的口味&#xff0c;贏得了無數食客的喜愛。牛筋面&#xff0c;這一名字就給人一種堅韌、有嚼勁的印象。它并非由牛筋制成&#xff0c;而是因其面條的口感如牛筋般勁道而得名。牛筋面的制作過程頗具巧思。選用優質的面…