【Elasticsearch】stored_fields

在 Elasticsearch 中,`stored_fields` 是一個非常重要的概念,主要用于控制文檔存儲和檢索時的行為。以下是對 `stored_fields` 的詳細解釋:

?

1\. `stored_fields` 的作用

?

`stored_fields` 用于指定在檢索文檔時需要返回的字段。默認情況下,Elasticsearch 在索引文檔時會將所有字段存儲在 `_source` 中,而 `_source` 是一個 JSON 格式的字段,包含了完整的文檔內容。但是,有時我們并不需要檢索整個 `_source`,而是只需要某些特定字段。通過設置 `stored_fields`,可以優化檢索性能和存儲空間。

?

2\. 使用場景

?

- 優化性能:如果只需要檢索文檔中的某些字段,而不是整個 `_source`,設置 `stored_fields` 可以減少數據傳輸量,從而提高檢索性能。

- 節省存儲空間:在某些情況下,某些字段可能不需要存儲,或者只需要存儲部分字段用于檢索,這樣可以節省磁盤空間。

- 提高安全性:在某些場景下,某些字段可能包含敏感信息,通過設置 `stored_fields`,可以避免這些字段被檢索或返回。

?

3\. 如何設置 `stored_fields`

?

在索引映射中設置

?

在創建索引時,可以通過映射(mapping)來指定哪些字段需要存儲。例如:

?

```json

PUT /my_index

{

? "mappings": {

? ? "properties": {

? ? ? "field1": {

? ? ? ? "type": "text",

? ? ? ? "store": true // 設置為 true 表示存儲該字段

? ? ? },

? ? ? "field2": {

? ? ? ? "type": "keyword",

? ? ? ? "store": false // 設置為 false 表示不存儲該字段

? ? ? }

? ? }

? }

}

```

?

- `store: true` 表示該字段會被單獨存儲,可以在檢索時通過 `stored_fields` 參數返回。

- `store: false` 表示該字段不會被單獨存儲,只能通過 `_source` 獲取。

?

在檢索時使用 `stored_fields` 參數

?

在查詢文檔時,可以通過 `stored_fields` 參數指定需要返回的字段。例如:

?

```json

GET /my_index/_search

{

? "query": {

? ? "match_all": {}

? },

? "stored_fields": ["field1", "field2"] // 指定返回的字段

}

```

?

如果字段被設置為 `store: true`,則可以通過 `stored_fields` 參數返回該字段的值。如果字段沒有被存儲(`store: false`),則無法通過 `stored_fields` 返回,只能通過 `_source` 獲取。

?

4\. `stored_fields` 與 `_source` 的區別

?

- 存儲方式:

? - `_source` 是一個 JSON 格式的字段,包含完整的文檔內容,存儲在 Lucene 的 `_source` 字段中。

? - `stored_fields` 是單獨存儲的字段,存儲在 Lucene 的存儲字段中,可以單獨檢索。

- 檢索性能:

? - 檢索 `_source` 時,需要解析整個 JSON 數據,性能相對較低。

? - 檢索 `stored_fields` 時,直接返回存儲的字段值,性能更高。

- 適用場景:

? - `_source` 適用于需要完整文檔內容的場景,例如更新文檔、重新索引等。

? - `stored_fields` 適用于只需要部分字段的場景,例如快速檢索某些字段的值。

?

5\. 注意事項

?

- 存儲成本:雖然 `stored_fields` 可以提高檢索性能,但存儲字段會占用額外的磁盤空間。因此,需要根據實際需求合理選擇存儲的字段。

- 字段類型:某些字段類型(如 `text` 類型的字段)在存儲時會占用較多空間,需要謹慎使用。

- 更新字段:如果需要更新存儲的字段,需要重新索引文檔,因為存儲的字段在文檔索引后無法直接修改。

?

通過合理使用 `stored_fields`,可以優化 Elasticsearch 的性能和存儲效率,滿足不同的檢索需求。

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

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

相關文章

計算機網絡 | 1.1 計算機網絡概述思維導圖

附大綱: 計算機網絡的概念 一個通過通信設備與線路把不同計算機系統連接起來,實現資源共享和信息傳遞的系統 計算機網絡的組成 從組成成分上 硬件:主機、通信鏈路、交換設備、通信處理機軟件:網絡操作系統、聊天軟件等協議&…

HOW - 簡歷和求職面試寶典(三)

文章目錄 1. 面試邀約2. 開始面試和自我介紹第一、面試前的準備工作第二、如何全面地介紹自己1. 面試邀約 第一、先認識日常HR 的工作流程 首先,電話溝通是 HR 核心工作內容的一部分。電話溝通分為兩種:一種是電話預約;另外一種是電話確認。 電話預約很清晰,就是確認面試…

Java基礎 Day24

一、進程和線程 1、進程 (1)概念 進程 (Process) 是計算機中的程序關于某數據集合上的一次運行活動 是系統進行資源分配的基本單位 簡單理解:程序的執行過程(正在運行的應用程序) (2)特性…

C#學習:基于LLM的簡歷評估程序

前言 在pocketflow的例子中看到了一個基于LLM的簡歷評估程序的例子,感覺還挺好玩的,為了練習一下C#,我最近使用C#重寫了一個。 準備不同的簡歷: 查看效果: 不足之處是現實的簡歷應該是pdf格式的,后面可以…

git怎么合并兩個分支

git怎么合并分支代碼 注意: 第一步你得把當前分支合到遠程分支去才能有下面的操作 另外我是將develop分支代碼合并到release分支去 git 命令 查看本地所有分支 git branch切換分支 例如切換到release分支 git checkout release拉取代碼 git pull up release 合并分支 …

Android-kotlin協程學習總結

Kotlin協程實戰對話? ?真題1:協程與線程的本質區別是什么?為什么說協程是輕量級的??? ?面試官?: “我看你項目中用協程替代了線程池,能說說協程和線程的核心區別嗎?為什么協程更適合高并發&#xf…

uni-app學習筆記十四-vue3中emit的使用

在組件傳值中&#xff0c;無論是props還是slot都是單向數據流&#xff0c;父組件向子組件傳值&#xff0c;子組件不能直接對父組件傳過來的值進行重新賦值。 下面學習子組件向父組件傳值的工具--emit。 在子組件emit設置傳遞的函數名和值 <template><view>子組件…

Java設計模式從基礎到實際運用

第一部分&#xff1a;設計模式基礎 1. 設計模式概述 設計模式(Design Pattern)是一套被反復使用、多數人知曉的、經過分類編目的代碼設計經驗的總結&#xff0c;它描述了在軟件設計過程中一些不斷重復出現的問題以及該問題的解決方案。設計模式是在特定環境下解決軟件設計問題…

鴻蒙OSUniApp 制作自定義的進度條組件#三方框架 #Uniapp

使用 UniApp 制作自定義的進度條組件 在移動應用開發中&#xff0c;進度條是非常常見的 UI 組件&#xff0c;無論是文件上傳、下載、任務進度還是表單填寫反饋&#xff0c;進度條都能為用戶提供直觀的進度提示。雖然 UniApp 提供了一些基礎的進度條能力&#xff0c;但在實際項…

Python爬蟲實戰:研究Beautiful Soup框架相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網的快速發展,網絡上的數據量呈爆炸式增長。如何從海量的網頁數據中高效提取有價值的信息,成為信息科學領域的重要研究課題。網絡爬蟲作為一種自動獲取網頁內容的技術,能夠按照預設規則遍歷互聯網并采集數據,為信息檢索、輿情分析、商…

【Tips】關于PCI和PCIe的配置空間差異和io/memory io讀寫

最近在看同事2023年講的PCI基礎課&#xff0c;感覺確實是豁然開朗了&#xff0c;贊美同事。 PCIe實際上是PCI的擴展&#xff08;extended&#xff09;&#xff0c;PCIe設備相當于是迭代升級產品。 而PCIe的配置空間基于PCI原有的0xFF&#xff08;256字節&#xff09;配置空間…

桂花網體育運動監測方案:開啟幼兒園運動健康管理新篇章

在幼兒教育領域&#xff0c;運動能力的培養與健康監測始終是備受關注的核心環節。隨著科技的飛速發展&#xff0c;如何科學、有效地監測幼兒的運動狀態&#xff0c;成為了幼兒園教育者面臨的一大挑戰。桂花網體育運動監測方案憑借其高效、精準、智能化的特性&#xff0c;為幼兒…

Perforce P4產品簡介:無限擴展+全球協作+安全管控+工具集成(附下載)

本產品簡介由Perforce中國授權合作伙伴——龍智編輯整理&#xff0c;旨在帶您快速了解Perforce P4版本控制系統的強大之處。 世界級無限可擴展的版本控制系統 Perforce P4&#xff08;原Helix Core&#xff09;是業界領先的版本控制平臺&#xff0c;備受19家全球Top20 AAA級游…

pikachu靶場通關筆記08 XSS關卡04-DOM型XSS

目錄 一、XSS原理 二、DOM型XSS 三、源碼分析 1、進入靶場 2、XSS探測 3、源碼分析 四、滲透實戰 1、Payload1 2、Payload2 3、Payload3 本系列為通過《pikachu靶場通關筆記》的XSS關卡(共10關&#xff09;滲透集合&#xff0c;通過對XSS關卡源碼的代碼審計找到XSS風…

安全訪問 std::tuple 的容錯方法及氣象領域應用

安全訪問 std::tuple 的容錯方法及氣象領域應用 1. std::tuple 安全訪問的核心問題 1.1 元組結構性問題&#xff08;編譯時錯誤&#xff09; 當元組元素數量為空時&#xff08;std::tuple<>&#xff09;&#xff0c;任何訪問元素的嘗試都會導致編譯錯誤?&#xff1a;…

Webug4.0靶場通關筆記03- 第3關SQL注入之時間盲注(手注法+腳本法 兩種方法)

目錄 一、源碼分析 1.分析閉合 2.分析輸出 &#xff08;1&#xff09;查詢成功 &#xff08;2&#xff09;查詢失敗 &#xff08;3&#xff09;SQL語句執行報錯 二、第03關 延時注入 1.打開靶場 2.SQL手注 &#xff08;1&#xff09;盲注分析 &#xff08;2&#xf…

【大模型學習網絡互聯】Memory-Mapped I/O MMIO語義與MEM語義

MMIO語義和MEM語義的區別 嗯&#xff0c;用戶要求更詳細地區分MMIO和MEM語義&#xff0c;看來之前的中文對比雖然系統但還不夠深入。用戶可能是嵌入式開發者或OS內核學習者&#xff0c;需要從硬件行為層面理解差異。 用戶連續追問MMIO相關概念&#xff0c;說明ta在接觸底層開發…

如何在使用kickstart安裝物理機操作系統的過程中核對服務器的SN

原因 在使用kickstart對物理機進行重裝的時候&#xff0c;由于自動化配置&#xff0c;掛載鏡像重啟之后就會自動化開始安裝部署&#xff0c;不夠安全&#xff0c;萬一選錯服務器沒有辦法回退。因此可以在kickstart的ks配置文件中新增服務器SN的校驗&#xff0c;當校驗不通過的…

spring4第4課-ioc控制反轉-詳解如何注入參數

堅持住&#xff0c;第四天&#xff0c;繼續學習spring4.詳解如何注入參數 先總結&#xff0c;主要有如下6種&#xff1a; 1&#xff0c;基本類型值&#xff1b; 2&#xff0c;注入 bean&#xff1b; 3&#xff0c;內部 bean&#xff1b; 4&#xff0c;null 值&#xff1b; 5&…

cf2067A

原題鏈接&#xff1a;https://codeforces.com/contest/2067/problem/A 題目背景&#xff1a; 給定x,y&#xff0c;判讀是否存在 n 滿足S(n) x&#xff0c;S(n 1) y。定義 S(a) 等于 a 的十進制位數之和。 思路&#xff1a; 不難發現一般 n 和 n 1 的位數之和相差為 1&…