【Elasticsearch】Retrieve inner hits獲取嵌套查詢的具體的嵌套文檔來源,以及父子文檔的來源

Retrieve inner hits 是 Elasticsearch 中的一個功能,用于在嵌套查詢或父子查詢中,返回導致主文檔匹配的具體嵌套對象或子/父文檔的詳細信息,幫助用戶更直觀地理解查詢結果的來源。

在 Elasticsearch 中,`Retrieve inner hits`是一個功能強大的特性,用于在嵌套查詢(`nested`)或父子查詢(`has_child`/`has_parent`)中檢索匹配的嵌套對象或子/父文檔。它允許用戶不僅能看到主文檔的匹配,還能看到導致主文檔匹配的具體嵌套對象或子/父文檔。

1.什么是`inner_hits`?

`inner_hits`的主要作用是返回導致主文檔匹配的具體嵌套對象或子/父文檔。在嵌套查詢中,主文檔可能包含多個嵌套對象,而`inner_hits`可以明確指出是哪些嵌套對象導致了主文檔的匹配。

2.使用場景

假設你有一個包含嵌套對象的文檔結構,例如:

```json

PUT test/_doc/1?refresh

{

? "title": "Test title",

? "comments": [

? ? { "author": "kimchy", "number": 1 },

? ? { "author": "nik9000", "number": 2 }

? ]

}

```

如果你希望查詢`number`字段為`2`的評論,并且想看到是哪個評論導致了主文檔的匹配,可以使用`inner_hits`。

3.查詢示例

以下是一個使用`inner_hits`的查詢示例:

```json

POST test/_search

{

? "query": {

? ? "nested": {

? ? ? "path": "comments",

? ? ? "query": {

? ? ? ? "match": { "comments.number": 2 }

? ? ? },

? ? ? "inner_hits": {} // 添加 inner_hits

? ? }

? }

}

```

4.響應結構

查詢的響應將包含`inner_hits`部分,明確指出匹配的嵌套對象:

```json

{

? "took": 1,

? "timed_out": false,

? "_shards": {

? ? "total": 1,

? ? "successful": 1,

? ? "skipped": 0,

? ? "failed": 0

? },

? "hits": {

? ? "total": {

? ? ? "value": 1,

? ? ? "relation": "eq"

? ? },

? ? "max_score": 1.0,

? ? "hits": [

? ? ? {

? ? ? ? "_index": "test",

? ? ? ? "_type": "_doc",

? ? ? ? "_id": "1",

? ? ? ? "_score": 1.0,

? ? ? ? "_source": {

? ? ? ? ? "title": "Test title",

? ? ? ? ? "comments": [

? ? ? ? ? ? { "author": "kimchy", "number": 1 },

? ? ? ? ? ? { "author": "nik9000", "number": 2 }

? ? ? ? ? ]

? ? ? ? },

? ? ? ? "inner_hits": {

? ? ? ? ? "comments": {

? ? ? ? ? ? "hits": {

? ? ? ? ? ? ? "total": { "value": 1, "relation": "eq" },

? ? ? ? ? ? ? "max_score": 1.0,

? ? ? ? ? ? ? "hits": [

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? "_index": "test",

? ? ? ? ? ? ? ? ? "_id": "1",

? ? ? ? ? ? ? ? ? "_nested": { "field": "comments", "offset": 1 },

? ? ? ? ? ? ? ? ? "_score": 1.0,

? ? ? ? ? ? ? ? ? "_source": { "author": "nik9000", "number": 2 }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ]

? ? ? ? ? ? }

? ? ? ? ? }

? ? ? ? }

? ? ? }

? ? ]

? }

}

```

在這個響應中:

? 主文檔`_id`為`1`的文檔被檢索出來。

? `inner_hits`明確指出了是哪個嵌套對象(`{"author": "nik9000", "number": 2}`)導致了主文檔的匹配。

5.性能優化

為了優化性能,可以設置`_source: false`并使用`docvalue_fields`,避免解析`_source`:

```json

POST test/_search

{

? "query": {

? ? "nested": {

? ? ? "path": "comments",

? ? ? "query": {

? ? ? ? "match": { "comments.number": 2 }

? ? ? },

? ? ? "inner_hits": {

? ? ? ? "_source": false,

? ? ? ? "docvalue_fields": ["comments.number"]

? ? ? }

? ? }

? }

}

```

這種方式可以減少查詢的解析時間和響應大小。

6.不使用`inner_hits`的區別

如果不使用`inner_hits`,查詢只會返回主文檔的`_source`,而不會明確指出是哪個嵌套對象導致了匹配。例如:

```json

POST test/_search

{

? "query": {

? ? "nested": {

? ? ? "path": "comments",

? ? ? "query": {

? ? ? ? "match": { "comments.number": 2 }

? ? ? }

? ? }

? }

}

```

響應中將不包含`inner_hits`部分,只返回主文檔的內容。

7.總結

? `inner_hits`的作用:明確指出導致主文檔匹配的具體嵌套對象或子/父文檔。

? 性能優化:通過設置`_source: false`和`docvalue_fields`,可以減少查詢的解析時間和響應大小。

? 適用場景:當你需要調試查詢或分析具體是哪些嵌套對象導致了主文檔匹配時,`inner_hits`是非常有用的工具。

希望這些信息能幫助你更好地理解和使用 Elasticsearch 的`Retrieve inner hits`功能!

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

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

相關文章

SpringCloud面試題----eureka和zookeeper都可以提供服務注冊與發現的功能,請說說兩個的區別

dEureka 和 Zookeeper 都可以提供服務注冊與發現的功能,它們的區別主要體現在以下幾個方面: 設計理念 Eureka:是基于 RESTful 風格設計的,強調簡單、輕量級,旨在為微服務架構提供一種易于使用的服務發現解決方案,注重服務的可用性和靈活性。Zookeeper:最初是為分布式協…

數據庫提權總結

Mysql提權 UDF提權是利用MYSQL的自定義函數功能,將MYSQL賬號轉化為系統system權限 前提: 1.UDF提權條件 (1)Mysql版本大于5.1版本udf.dll文件必須放置于MYSQL安裝目錄下的lib\plugin文件夾下。 (2)Mysql…

“深入淺出”系列之QT:(10)Qt接入Deepseek

項目配置: 在.pro文件中添加網絡模塊: QT core network API配置: 將apiUrl替換為實際的DeepSeek API端點 將apiKey替換為你的有效API密鑰 根據API文檔調整請求參數(模型名稱、溫度值等) 功能說明: 使…

【Linux探索學習】第二十七彈——信號(上):Linux 信號基礎詳解

Linux學習筆記: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 前面我們已經將進程通信部分講完了,現在我們來講一個進程部分也非常重要的知識點——信號,信號也是進程間通信的一…

nginx負載均衡, 解決iphash不均衡的問題之consistent

原因分析 客戶端IP分布不均:部分IP段請求集中,導致哈希到同一后端。 服務器數量變動:增刪節點時,傳統ip_hash未使用一致性哈希,導致分布重置。 哈希鍵范圍過小:例如僅使用IPv4前24位,不同IP可…

[C++]多態詳解

目錄 一、多態的概念 二、靜態的多態 三、動態的多態 3.1多態的定義 3.2虛函數 四、虛函數的重寫(覆蓋) 4.1虛函數 4.2三同 4.3兩種特殊情況 (1)協變 (2)析構函數的重寫 五、C11中的final和over…

WEB安全--SQL注入--PDO與繞過

一、PDO介紹: 1.1、原理: PDO支持使用預處理語句(Prepared Statements),這可以有效防止SQL注入攻擊。預處理語句將SQL語句與數據分開處理,使得用戶輸入的數據始終作為參數傳遞給數據庫,而不會直…

ES12 weakRefs的用法和使用場景

ES12 (ECMAScript 2021) 特性總結:WeakRef 1. WeakRef 概述 描述 WeakRef 是 ES12 引入的一個新特性,用于創建對對象的弱引用。弱引用不會阻止垃圾回收器回收對象,即使該對象仍然被弱引用持有。WeakRef 通常與 FinalizationRegistry 結合使…

50頁精品PPT | 某大數據資產平臺建設項目啟動會材料

該PPT主要介紹了某集團大數據資產平臺建設項目的啟動會材料,圍繞數據作為數字經濟時代核心生產要素的背景,結合國家戰略和集團數字化轉型需求,分析了當前數據資源整合不足、孤島現象嚴重、質量管控薄弱及共享機制不完善等問題,提出…

8.【線性代數】——求解Ax=b

八 求解Axb 1. 解Axb求特解 x p x_p xp?求特解 x n x_n xn?所有解 2. Axb什么時候有解3. A m ? n A_{m * n} Am?n?不同秩的Axb解分析3.1 列滿秩 rn<m3.2 行滿秩 rm<n3.3 rmn3.4 r<m 且 r < n3.5 綜述 1. 解Axb 求解 { x 1 2 x 2 2 x 3 2 x 4 b 1 2 x 1…

動靜態鏈接與加載

目錄 靜態鏈接 ELF加載與進程地址空間&#xff08;靜態鏈接&#xff09; 動態鏈接與動態庫加載 GOT表 靜態鏈接 對于多個.o文件在沒有鏈接之前互相是不知到對方存在的&#xff0c;也就是說這個.o文件中調用函數的的跳轉地址都會被設定為0&#xff08;當然這個函數是在其他.…

Web 后端 請求與響應

一 請求響應 1. 請求&#xff08;Request&#xff09; 客戶端向服務器發送的HTTP請求&#xff0c;通常包含以下內容&#xff1a; 請求行&#xff1a;HTTP方法&#xff08;GET/POST等&#xff09;、請求的URL、協議版本。 請求頭&#xff08;Headers&#xff09;&#xff1a;…

【Excel筆記_6】條件格式和自定義格式設置表中數值超過100保留1位,超過1000保留0位,低于100為默認

方法一&#xff1a;自定義格式 選中需要設置格式的單元格區域。右鍵選擇設置單元格格式&#xff0c;或者在工具欄中選擇開始 -> 數字 -> 自定義格式。在類型框中輸入以下自定義格式&#xff1a; [>1000]0;[>100]0.0;G/通用格式解釋&#xff1a; [>1000]0&…

排序與算法:希爾排序

執行效果 希爾排序的執行效果是這樣的&#xff1a; 呃……看不懂嗎&#xff1f;沒關系&#xff0c;接著往下看介紹 算法介紹 希爾排序算法&#xff08;Shell Sort&#xff09;是按其設計者希爾&#xff08;Donald Shell&#xff09;的名字命名&#xff0c;該算法由 1959 年公布…

Python HTTP 請求工具類 HttpUtils:簡化 HTTP 請求的高效工具

在現代的 Web 開發和 API 集成中,HTTP 請求是最常見的操作之一。無論是獲取數據、提交表單,還是與 RESTful API 交互,我們都需要頻繁地發送 HTTP 請求。為了簡化這些操作,提升代碼的可讀性和可維護性,我們可以使用一個高效的工具類——HttpUtils。本文將詳細介紹 HttpUtil…

親測Windows部署Ollama+WebUI可視化

一. Ollama下載 登錄Ollama官網(Ollama)點擊Download進行下載 如果下載很慢可用以下地址下載&#xff1a; https://github.com/ollama/ollama/releases/download/v0.5.7/OllamaSetup.exe 在DeepSeek官網上&#xff0c;你可以直接點擊【model】 到達這個界面之后&#xff0c;…

用xml配置spring, bean標簽有哪些屬性?

用xml配置spring, bean標簽有哪些屬性? 在Spring框架中&#xff0c;使用XML配置文件時&#xff0c;<bean>標簽用于定義一個Bean。以下是一些常用的<bean>標簽屬性&#xff1a; 1. class 描述&#xff1a;指定Bean的類名。示例&#xff1a;<bean id"myBe…

50頁PDF|數字化轉型成熟度模型與評估(附下載)

一、前言 這份報告依據GBT 43439-2023標準&#xff0c;詳細介紹了數字化轉型的成熟度模型和評估方法。報告將成熟度分為五個等級&#xff0c;從一級的基礎轉型意識&#xff0c;到五級的基于數據的生態價值構建與創新&#xff0c;涵蓋了組織、技術、數據、資源、數字化運營等多…

golang panic信息捕獲

背景 我們的日志接入阿里云sls平臺&#xff0c;但是&#xff0c;日志是以json的格式存儲在阿里云sls平臺上&#xff0c;程序中產生的error,info等日志都可以實現以json的格式打印。但是&#xff0c;golang程序中產生的panic信息本身不是以json的格式輸出&#xff0c;這就導致p…

攔截器VS過濾器:Spring Boot中請求處理的藝術!

目錄 一、攔截器&#xff08;Interceptor&#xff09;和過濾器&#xff08;Filter&#xff09;&#xff1a;都是“守門員”&#xff01;二、如何實現攔截器和過濾器&#xff1f;三、攔截器和過濾器的區別四、執行順序五、真實的應用場景六、總結 &#x1f31f;如果喜歡作者的講…