【Elasticsearch基礎】基本核心概念介紹

Elasticsearch作為當前最流行的分布式搜索和分析引擎,其強大的功能背后是一套精心設計的核心概念體系。本文將深入解析Elasticsearch的五大核心概念,幫助開發者構建堅實的技術基礎,并為高效使用ES提供理論支撐。

1 索引(Index)與文檔(Document)

1.1 索引:數據的邏輯容器

在Elasticsearch中,索引(Index)*是最高層次的數據組織單位,相當于傳統數據庫中的"數據庫"概念。但與傳統數據庫不同,ES索引具有以下特點:
  • 動態模式:字段類型可以在寫入時自動識別(可通過映射關閉)
  • 分布式存儲:數據自動分布在集群的多個節點上
  • 優化設計:專為搜索性能優化的數據結構
// 創建索引示例
PUT /test
{"settings": {"number_of_shards": 3,"number_of_replicas": 1}
}
// 查看索引 
GET /test

1.2 文檔:數據的基本單元

文檔(Document):是ES中可被索引的最小數據單元,采用JSON格式表示:
  • 每個文檔有唯一ID(可自動生成)
  • 文檔包含多個字段(Field)
  • 文檔元數據包括:_index,?_type,?_id,?_version等
// 插入文檔
POST /test/_doc/01
{"name": "智能手機","price": 3999,"description": "旗艦級配置","tags": ["電子","數碼"]
}
// 查看文檔 
GET /test/_doc/01
索引與傳統數據庫對比:

概念

Elasticsearch

傳統RDBMS

數據容器

索引(Index)

數據庫(Database)

數據記錄

文檔(Document)

行(Row)

數據模式

映射(Mapping)

表結構(Schema)

2 分片(Shard)與副本(Replica)

2.1 分片:分布式存儲的基礎

分片(Shard):是Elasticsearch實現分布式特性的核心機制:
  • 橫向擴展:索引被分成多個分片,分散在不同節點
  • 容量限制:單個分片推薦不超過50GB數據(實際取決于硬件)
  • 主分片(Primary):負責處理索引和搜索請求
  • 不可變性:分片數量在創建索引后不可更改
// 創建帶分片的索引
PUT /testindex
{"settings": {"number_of_shards": 3,"number_of_replicas": 1}
}
// 查看索引分片 
GET _cat/shards/testindex?v

2.2 副本:高可用的保障

副本(Replica):是分片的拷貝,主要具備如下特性
  • 數據冗余:防止硬件故障導致數據丟失
  • 讀取擴展:搜索請求可以在所有副本上并行執行
  • 故障轉移:當主分片不可用時,副本可提升為主分片
// 查看分片分配情況 
GET /_cat/shards/test?v

分片策略最佳實踐
  • 根據數據量預估總分片數(每分片30-50GB)
  • 生產環境至少1個副本
  • 分片數應與集群節點數協調(避免分配不均)

3 映射(Mapping)與字段類型

3.1 映射:數據結構的定義

映射(Mapping):定義了文檔及其字段的存儲和索引方式
  • 字段數據類型:text, keyword, date, long等
  • 索引控制:是否可搜索、是否存儲原始值
  • 分析器指定:如何處理文本內容
// 基礎文本映射
PUT /test3
{"mappings": {"properties": {"title": { "type": "text" }, "views": { "type": "integer" },"publish_date": { "type": "date" }}}
}

3.2 核心字段類型詳解

3.2.1 Text vs Keyword

  • Text:用于全文搜索,會被分詞
  • Keyword:用于精確匹配,如過濾、聚合

3.2.2 特殊類型

  • Geo_point:經緯度坐標
  • Nested:嵌套對象(保持數組元素間關系)
  • Join:定義父子文檔關系

3.2.3 多字段(Multi-fields)

  • 允許一個字段以不同方式索引
"product_id": {"type": "keyword","fields": {"analyzed": { "type": "text" }}
}

4 總結

深入理解Elasticsearch這些基礎核心概念,是構建高效搜索解決方案的基礎。在實際應用中,需要根據具體業務場景靈活組合這些特性。后續我們將深入探討查詢DSL、聚合分析等高級主題。

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

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

相關文章

Qt在ARM中,如何使用drmModeObjectSetProperty 設置 Plane 的 zpos 值

在 Qt 中直接使用 drmModeObjectSetProperty 設置 Plane 的 zpos 值需要結合 Linux DRM/KMS API 和 Qt 的底層窗口系統(如 eglfs 平臺插件)。以下是詳細步驟和代碼示例: 1. 原理說明 DRM/KMS 基礎: Plane:負責圖層合成…

MFC添加免費版大漠3.1233

先創建一個MFC工程, 添加dm.dll 方法一:通過類向導-添加類-類型庫中的MFC類-文件,選擇dm.dll,如果沒有"添加類型庫中的MFC類"選項就用方法二添加 方法二:添加-新建項-MFC-Active或TypeLib-實現接口位置選…

【Linux】應用層協議 HTTP

應用層協議 HTTP 一. HTTP 協議1. URL 地址2. urlencode 和 urldecode3. 請求與響應格式 二. HTTP 請求方法1. GET 和 POST (重點) 三. HTTP 狀態碼四. HTTP 常見報頭五. 手寫 HTTP 服務器 HTTP(超文本傳輸協議)是一種應用層協議,用于在萬維網…

【活動回顧】StarRocks Singapore Meetup #2 @Shopee

3 月 13 日,StarRocks 社區在新加坡成功舉辦了第二場 Meetup 活動,主題為“Empowering Customer-Facing Analytics”。本次活動在 Shopee 新加坡辦公室舉行,吸引了來自 Shopee、Grab 和 Pinterest 的專家講師以及 50 多位參會者。大家圍繞電商…

Retinexformer:基于 Retinex 的單階段 Transformer 低光照圖像增強方法

開頭發點牢騷:本來做的好好都都要中期了,導師怎么突然給我換題目啊。真是繃不住了......又要從頭開始學了,唉! 原論文鏈接:Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement 低光…

后端——AOP異步日志

需求分析 在SpringBoot系統中,一般會對訪問系統的請求做日志記錄的需求,確保系統的安全維護以及查看接口的調用情況,可以使用AOP對controller層的接口進行增強,作日志記錄。日志保存在數據庫當中,為了避免影響接口的響…

flink廣播算子Broadcast

文章目錄 一、Broadcast二、代碼示例三.或者第二種(只讀取一個csv文件到廣播內存中)提示:以下是本篇文章正文內容,下面案例可供參考 一、Broadcast 為了關聯一個非廣播流(keyed 或者 non-keyed)與一個廣播流(BroadcastStream),我們可以調用非廣播流的方法 connect(),…

Redis 和 MySQL雙寫一致性的更新策略有哪些?常見面試題深度解答。

目錄 一. 業務數據查詢,更新順序簡要分析 二. 更新數據庫、查詢數據庫、更新緩存、查詢緩存耗時對比 2.1 更新數據庫(最慢) 2.2 查詢數據庫(較慢) 2.3 更新緩存(次快) 2.4 查詢緩存&#…

SRT協議

SRT(Secure Reliable Transport)是一種開源的視頻傳輸協議,專為高丟包、高延遲網絡環境設計,結合了UDP的低延遲和TCP的可靠性,廣泛應用于直播、遠程制作、視頻會議等場景。 定位:SRT協議的官方C/C實現庫&am…

“征服HTML引號惡魔:“完全解析手冊”!!!(quot;表示雙引號)

&#x1f6a8;&#x1f4e2; "征服HTML引號惡魔&#xff1a;“完全解析手冊” &#x1f4e2;&#x1f6a8; &#x1f3af; 博客引言&#xff1a;當引號變成"惡魔" &#x1f631; 是否遇到過這種情況&#xff1a; 寫HTML時滿心歡喜輸入<div title"他…

npm install 卡在創建項目:sill idealTree buildDeps

參考&#xff1a; https://blog.csdn.net/PengXing_Huang/article/details/136460133 或者再執行 npm install -g cnpm --registryhttps://registry.npm.taobao.org 或者換梯子

c++中cpp文件從編譯到執行的過程

C 文件從編寫到執行的過程可以分為幾個主要階段&#xff1a;編寫代碼、預處理、編譯、匯編、鏈接和運行。以下是每個階段的詳細說明&#xff1a; 1. 編寫代碼 這是整個過程的起點。程序員使用文本編輯器&#xff08;如 VSCode、Sublime Text 或其他 IDE&#xff09;編寫 C 源…

PROE 與 STL 格式轉換:開啟 3D 打印及多元應用的大門

在 3D 設計與制造的復雜生態中&#xff0c;將 PROE 格式轉換為 STL 格式絕非無端之舉&#xff0c;而是有著深厚且多元的現實需求作為支撐。 一、文件格式介紹? &#xff08;一&#xff09;PROE 格式? PROE 作為一款參數化設計軟件&#xff0c;采用基于特征的參數化建模技術…

開發中后端返回下劃線數據,要不要統一轉駝峰?

先說結論。看情況&#xff01;&#xff01;&#xff01;&#xff01; 前端 主要用 JS/TS 建議后端返回 camelCase&#xff0c;減少前端轉換成本。后端 主要是 Python/Go 建議保持 snake_case&#xff0c;前端做轉換。但是團隊統一風格最重要&#xff01;如果統一返回駝峰就駝峰…

docker pull時報錯:https://registry-1.docker.io/v2/

原文&#xff1a;https://www.cnblogs.com/sdgtxuyong/p/18647915 https://www.cnblogs.com/OneSeting/p/18532166 docker 換源&#xff0c;解決連接不上的問題。 編輯以下文件&#xff0c;不存在則創建&#xff1a; vim /etc/docker/daemon.json {"registry-mirrors&qu…

Pytorch學習筆記(十二)Learning PyTorch - NLP from Scratch

這篇博客瞄準的是 pytorch 官方教程中 Learning PyTorch 章節的 NLP from Scratch 部分。 官網鏈接&#xff1a;https://pytorch.org/tutorials/intermediate/nlp_from_scratch_index.html 完整網盤鏈接: https://pan.baidu.com/s/1L9PVZ-KRDGVER-AJnXOvlQ?pwdaa2m 提取碼: …

基礎算法02——冒泡排序(Bubble Sort)

冒泡排序&#xff08;Bubble Sort&#xff09; 冒泡排序&#xff1a;是一種簡單的排序算法&#xff0c;其基本思想是通過重復遍歷要排序的列表&#xff0c;比較相鄰的元素&#xff0c;并在必要時&#xff08;即前面的數比后面的數大的時候&#xff09;交換它們的位置&#xff…

RestTemplate遠程調用接口方式

1.Post(body空參) 也就是說需要給一個空的json 代碼: String getDeviceUrl this.MOVABLE_URL "detected-data/getMachineLists"; // 遠程調用 RestTemplate restTemplate new RestTemplate(); restTemplate.getMessageConverters().set(1,new StringHttpMessageC…

ar頭顯和眼鏡圖像特效處理

使用一個線程從攝像頭或者其他設備循環讀取圖像數據寫入鏈表&#xff0c;另一個線程從鏈表循環讀取數據并做相應的特效處理&#xff0c;由于寫入的速度比讀取的快&#xff0c;最終必然會因為寫入過快導致線程讀寫一幀而引發沖突和數據幀正常數據幀被覆蓋。最好使用共享內存&…

mysql--socket報錯

錯誤原因分析 MySQL 服務未運行&#xff08;最常見原因&#xff09; 錯誤中的 (2) 表示 “No such file or directory”&#xff0c;即 /tmp/mysql.sock 不存在這通常意味著 MySQL 服務器根本沒有啟動 socket 文件路徑不匹配 客戶端嘗試連接 /tmp/mysql.sock但 MySQL 服務器可…