ES批量查詢

在 Elasticsearch 中,multi_search(也稱為?msearch)是一種允許你在單個請求中執行多個搜索操作的 API。它可以顯著減少網絡開銷,尤其是在需要執行多個查詢時。multi_search?會將多個查詢打包成一個請求發送給 Elasticsearch,然后返回多個查詢的結果。


1.?multi_search?的基本用法

multi_search?的請求格式如下:

  1. 請求頭:指定索引名稱(可選)和搜索參數。

  2. 請求體:每個查詢由兩部分組成:

    • 一個可選的?header?部分,用于指定索引、類型和搜索參數。

    • 一個?body?部分,用于指定查詢 DSL。

示例

以下是一個?multi_search?的示例,包含兩個查詢:

json

復制

POST /_msearch
{}
{"index": "index1"}
{"query": {"match_all": {}}, "size": 10}
{}
{"index": "index2"}
{"query": {"match": {"field": "value"}}, "size": 5}
  • 第一個查詢:在?index1?中執行?match_all?查詢,返回最多10條文檔。

  • 第二個查詢:在?index2?中執行?match?查詢,返回最多5條文檔。


2.?multi_search?的響應

multi_search?的響應是一個數組,數組中的每個元素對應一個查詢的結果。例如:

json

復制

{"responses": [{"took": 10,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": {"value": 100,"relation": "eq"},"max_score": 1.0,"hits": [{"_index": "index1","_type": "_doc","_id": "1","_score": 1.0,"_source": {"field": "value1"}},...]}},{"took": 5,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": {"value": 50,"relation": "eq"},"max_score": 1.5,"hits": [{"_index": "index2","_type": "_doc","_id": "2","_score": 1.5,"_source": {"field": "value2"}},...]}}]
}
  • responses:是一個數組,每個元素對應一個查詢的結果。

  • 每個查詢的結果與普通的?_search?請求返回的結果格式相同。


3.?multi_search?的優勢

  1. 減少網絡開銷

    • 將多個查詢打包成一個請求,減少了客戶端與 Elasticsearch 之間的網絡往返次數。

    • 適合需要同時執行多個查詢的場景。

  2. 提高性能

    • Elasticsearch 會并行處理?multi_search?中的查詢,從而提高查詢效率。

  3. 靈活性

    • 可以在一個請求中查詢多個索引,甚至可以為每個查詢指定不同的索引和參數。


4.?multi_search?的使用場景

  1. 批量查詢

    • 當需要同時執行多個查詢時,可以使用?multi_search?來減少網絡開銷。

    • 例如,在前端頁面中同時加載多個模塊的數據。

  2. 多索引查詢

    • 當需要從多個索引中查詢數據時,可以使用?multi_search?來簡化查詢邏輯。

  3. 性能優化

    • 當需要優化查詢性能時,可以將多個查詢合并為一個?multi_search?請求。


5. 示例代碼

以下是一個完整的?multi_search?示例,包含兩個查詢:

請求

json

復制

POST /_msearch
{}
{"index": "index1"}
{"query": {"match_all": {}}, "size": 10}
{}
{"index": "index2"}
{"query": {"match": {"field": "value"}}, "size": 5}

響應

json

復制

{"responses": [{"took": 10,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": {"value": 100,"relation": "eq"},"max_score": 1.0,"hits": [{"_index": "index1","_type": "_doc","_id": "1","_score": 1.0,"_source": {"field": "value1"}},...]}},{"took": 5,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": {"value": 50,"relation": "eq"},"max_score": 1.5,"hits": [{"_index": "index2","_type": "_doc","_id": "2","_score": 1.5,"_source": {"field": "value2"}},...]}}]
}

6. 總結

  • multi_search?是一種高效的批量查詢機制,適合同時執行多個查詢。

  • 優勢:減少網絡開銷、提高性能、支持多索引查詢。

  • 使用場景:批量查詢、多索引查詢、性能優化。

通過合理使用?multi_search,可以顯著提高查詢效率,尤其是在需要執行多個查詢的場景中。

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

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

相關文章

安裝 cnpm 出現 Unsupported URL Type “npm:“: npm:string-width@^4.2.0

Unsupported URL Type "npm:": npm:string-width^4.2.0 可能是 node 版本太低了,需要安裝低版本的 cnpm 試試 npm cache clean --force npm config set strict-ssl false npm install -g cnpm --registryhttps://registry.npmmirror.com 改為 npm insta…

計算機基礎面試(數據庫)

1. 事務的ACID特性?如何通過日志保證原子性和持久性? 專業解答: ACID:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Dura…

fastjson1.2.24 CVE-2017-18349 漏洞復現

fastjson1.2.24 CVE-2017-18349 漏洞復現 時間不等人啊/(ㄒoㄒ)/~~ 0. 前置知識 建議直接看參考鏈接 JNDI:Java命名和目錄接口 RMI:遠程方法調用注冊表 LDAP:輕量級目錄訪問協議 CORBA:公共對象請求代理體系結構 1. jndi …

【計算機視覺】手勢識別

手勢識別是計算機視覺領域中的重要方向,通過對攝像機采集的手部相關的圖像序列進行分析處理,進而識別其中的手勢,手勢被識別后用戶就可以通過手勢來控制設備或者與設備交互。完整的手勢識別一般有手的檢測和姿態估計、手部跟蹤和手勢識別等。…

Leetcode 37: 解數獨

Leetcode 37: 解數獨 是經典的回溯算法問題,考察如何利用遞歸和剪枝高效求解數獨問題。這題主要考察對回溯、遞歸、深度優先搜索 (DFS)、剪枝優化等算法思想的掌握。 題目描述 給定一個部分填充的數獨(9 x 9)網格,用一個有效的算…

VSCode 移除EmmyLua插件的紅色波浪線提示

VSCode 中安裝插件EmmyLua,然后打開lua文件的時候,如果lua代碼引用了C#腳本的變量,經常出現 “undefined global variable: UnityEngineEmmyLua(undefined-global)” 的紅色波浪線提示,這個提示看著比較煩人,我們可以通…

【音視頻】視頻基本概念

一、視頻的基本概念 1.1 視頻碼率(kb/s) 視頻碼率是指視頻文件在單位時間內使用的數據流量,也叫碼流率。碼率越大,說明單位時間內取樣率越大,數據流進度也就越高 1.2 視頻幀率(fps) 視頻幀率…

Grafana服務安裝并啟動

Grafana服務安裝并啟動 1、介紹2、下載Grafana3、解壓縮文件4、啟動Grafana服務5、增加數據源,填寫Prometheus訪問地址6、增加圖表 1、介紹 Grafana是一個開源的可視化系統監控和警報工具包。 2、下載Grafana 介紹:Grafana是一個開源的可視化系統監控和警報工具包…

如何將hf-mirror.com作為vllm默認的下載源? conda如何移除虛擬環境?conda 如何復制一份虛擬環境?

前言 上回咱說道,如果你沒辦法訪問huggingface.co,則可以把modelscope作為vllm默認的下載源。 但如果你非得用你用不了的huggingface.co呢?那你可以考慮將hf-mirror.com作為vllm默認的下載源。這里,hf-mirror.com和huggingface.co的效果是一樣的。 要將hf-mirror.com設為v…

MySQL零基礎教程14—子查詢

子查詢比較簡單,我們還是通過案例引入。 有時候我們查詢的時候,需要用到的不止一個表的數據,比如下面的場景: 查詢名字叫李曉紅同學的班主任姓名 我們提供三個表的基礎信息如下: 從三張表的結構,我們不難…

基于單片機和Wifi技術的智能臺燈設計

摘要 :本文主要介紹了基于單片機AT89C51和Wifi技術的智能臺燈的硬件和軟件設計。該智能臺燈具有根據當前光線自動調節燈光亮度的功能,還可對用戶使用臺燈時處于非正常的距離和姿態時給予報警提示,用戶可以隨時通過手機app查詢智能臺燈的報警記…

最新版AI大模型面試八股文

1、主流的開源大模型體系有哪些,并簡要介紹它們的特點? 這個問題考察面試者對當前大模型生態的了解,包括如 Transformer-based 模型(如 BERT, GPT 系 列)、T5、Switch Transformer 等,以及它們的架構特點和…

在MySQL拿到一條慢SQL語句要如何優化?

在工作的過程中,很多時候會發現執行業務邏輯的時候,某一條SQL語句執行得非常慢。這時候,要如何處理這條語句,如何判斷語句慢的地方在哪里? 一、初級排查 EXPLAIN慢SQL分析 MySQL官網用法: https://dev.mys…

leetcode hot 100 239. 滑動窗口最大值

給你一個整數數組 nums,有一個大小為 k 的滑動窗口從數組的最左側移動到數組的最右側。你只可以看到在滑動窗口內的 k 個數字。滑動窗口每次只向右移動一位。 返回 滑動窗口中的最大值 。 示例 1: 輸入:nums [1,3,-1,-3,5,3,6,7], k 3 輸…

Leetcode 189: 輪轉數組

Leetcode 189: 輪轉數組 這是一道經典問題,題目要求將一個數組向右輪轉 k 個位置,有多種解法可以快速求解,既可以通過額外空間,也可以在 O(1) 的空間復雜度內完成。本題考察數組操作、雙指針,以及算法優化能力。 題目…

優選算法的智慧之光:滑動窗口專題(二)

專欄:算法的魔法世界?????? 個人主頁:手握風云 目錄 一、例題講解 1.1. 最大連續1的個數 III 1.2. 找到字符串中所有字母異位詞 1.3. 串聯所有單詞的子串 1.4. 最小覆蓋子串 一、例題講解 1.1. 最大連續1的個數 III 題目要求是二進制數組&am…

Linux系統安裝Azure CLI完全指南

引言 Azure CLI是管理Azure云服務的重要命令行工具。本文將詳細介紹在Linux系統上安裝Azure CLI的兩種方法,并提供版本管理、故障排除等完整解決方案。 © ivwdcwso (ID: u012172506) 一、安裝前準備 1.1 系統要求 支持的Linux發行版: Ubuntu 20.04/22.04 LTSDebian 10/…

2025嵌入式軟件開發工程師--音頻方向

一、選擇題(每題3分,共30分) 1.以下哪個不是C語言中的關鍵字?( ) A. int B. Float C. Define D. Return 2.以下代碼的輸出是: ( ) inta 5, b 10; printf("%d“, a b); A. 15 B.16 …

TCP/IP四層模型:從入門到精通

第一部分:基礎概念 1.1 什么是TCP/IP? - TCP/IP 是互聯網的基礎通信協議簇,定義了數據如何在網絡中傳輸和路由。 - 與OSI七層模型的對比:TCP/IP更簡化,分為四層,注重實際應用。 1.2 四層模型結構 1. 應…

【Python 數據結構 1.零基礎復習】

目錄 一、輸入與輸出 1.輸入 2.格式化輸出 二、數字與變量 1.字符串 & 整型 2.字符串 & 整型 & 浮點型 3.變量 練習 2235. 兩整數相加 三、運算與操作 1.四則運算 練習 2769. 找出最大的可達成數字 3.取整與取余 練習 2651. 計算列車到站時間 ?編輯 四、真與假 1…