vocus logo

方格子 vocus

Elasticsearch Text vs Keyword:搞懂全文檢索與聚合分析的關鍵差異

更新 發佈閱讀 5 分鐘

如果你也曾在 Elasticsearch 查詢時遇過這種疑惑——「為什麼有些欄位能聚合、有些卻不行?」 「LIKE "*python*" 在某些欄位能搜尋,在另一些卻沒結果?」
那你一定要看完這篇
ES 7.x 之後,string 類型被拆分成兩種用途明確的新型別:
text 用於 全文檢索(Full-text Search)
keyword 用於 精確匹配(Exact Search)與聚合(Aggregation)
這篇文章會幫你一次釐清它們的差別、實際應用場景與最佳實踐!

為什麼會有 Text 與 Keyword 之分?

在舊版 Elasticsearch 裡,所有字串都是 string 類型。
但這樣的設計導致模糊搜尋與聚合分析互相衝突。
官方將字串類型拆為:

  • text:經過分詞(tokenized),可進行全文檢索。
  • keyword:不分詞,適合精確比對與聚合分析。

1. Text 類型 — 為全文搜尋而生

用途

text 類型適合儲存「自然語言」內容,如日誌訊息、描述文字、文章內文。
它會先經過 Analyzer(分析器) 斷詞,再建立索引。

屬性 說明

是否分詞 會分詞
查詢方式 支援模糊、全文查詢
是否支援聚合 不支援
適用場景 日誌內容、文字描述等需全文搜索的欄位

範例

SELECT crond_message
FROM cwb-linux
WHERE crond_message LIKE '*python*'
AND @timestamp BETWEEN '2022-12-16T00:35:38.831Z' AND '2022-12-20T10:35:38.831Z'
LIMIT 10000

對應的 mapping:

"crond_message": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}

小提示:
Elasticsearch 預設會幫 text 欄位建立一個 .keyword 子欄位,用於精確匹配。

2. Keyword 類型 — 精確匹配與聚合分析的主角

用途

keyword 適合儲存「結構化」字串,例如:主機名稱、ID、IP、分類、標籤等。

屬性 說明
是否分詞 不分詞
查詢方式 精確匹配或 wildcard 模糊查詢
是否支援聚合 支援
適用場景 ID、名稱、類別、標籤等需統計或篩選的欄位

範例

SELECT host.hostname
FROM iis-w3c-*
WHERE host.hostname LIKE '*IIS*'
LIMIT 10000

對應的 mapping:

"host": {
"properties": {
"hostname": { "type": "keyword" },
"ip": { "type": "keyword" },
"os": {
"properties": {
"name": { "type": "keyword" },
"version": { "type": "keyword" }
}
}
}
}

Text vs Keyword 一覽表

屬性 text keyword
是否分詞
精確查詢 需用 .keyword 直接支援
模糊查詢(wildcard) 有限支援 支援
聚合(Aggregation) 不支援 支援
適用場景 文章內容、訊息 ID、主機名、分類
檢索類型 全文檢索 精確匹配、統計

結語:如何選擇才對?

選擇 textkeyword 並不是非黑即白。
最好的做法是根據使用場景設計 mapping:

  • 若你想搜尋「內容包含 XXX」:選 text
  • 若你想問「這台主機出現幾次」:選 keyword

清楚區分兩者的行為,就能避免查詢結果錯誤、聚合失敗、或前端判斷複雜的問題。


留言
avatar-img
小猴工程師
2會員
31內容數
以工程師視角拆解技術與生活的連結。專長 DevOps、AI 與區塊鏈,把艱深的技術轉化為易懂的故事。 文章主題橫跨技術筆記、實作教學與個人經驗分享。 寫作理念:讓每個想靠技術改變生活的人,都能在這裡找到啟發。
小猴工程師的其他內容
2025/10/20
解釋 Dockerfile 中 CMD 與 ENTRYPOINT 的區別與搭配使用方式,釐清兩者在容器啟動時的執行順序與覆蓋關係,並說明 Shell form 和 Exec form 的差異,幫助開發者更靈活地運用。
Thumbnail
2025/10/20
解釋 Dockerfile 中 CMD 與 ENTRYPOINT 的區別與搭配使用方式,釐清兩者在容器啟動時的執行順序與覆蓋關係,並說明 Shell form 和 Exec form 的差異,幫助開發者更靈活地運用。
Thumbnail
2025/10/17
Docker 儼然已成為軟體開發與部署的標準工具。而 Dockerfile 作為自動化建構映像檔的關鍵腳本,更是不可或缺。本文將帶你深入瞭解 Dockerfile 的基本結構、常用指令,並透過實際範例,從零開始建構一個 Node.js 應用映像檔,讓你輕鬆掌握環境部署的自動化流程。
Thumbnail
2025/10/17
Docker 儼然已成為軟體開發與部署的標準工具。而 Dockerfile 作為自動化建構映像檔的關鍵腳本,更是不可或缺。本文將帶你深入瞭解 Dockerfile 的基本結構、常用指令,並透過實際範例,從零開始建構一個 Node.js 應用映像檔,讓你輕鬆掌握環境部署的自動化流程。
Thumbnail
2025/10/14
路由器和交換器在建立網路時都扮演著關鍵角色,但功能截然不同。本文將深入解析兩者的職責、如何正確連接,以及在何種情況下需要額外添購交換器,幫助您打造更穩定、安全的家庭或辦公室網路。
Thumbnail
2025/10/14
路由器和交換器在建立網路時都扮演著關鍵角色,但功能截然不同。本文將深入解析兩者的職責、如何正確連接,以及在何種情況下需要額外添購交換器,幫助您打造更穩定、安全的家庭或辦公室網路。
Thumbnail
看更多
你可能也想看
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
在這篇教學文章中,我們將展示如何使用 Python 和 pytrends 套件來取得 Google 趨勢(Google Trends)的熱門關鍵詞。我們會詳細說明如何安裝和設定 pytrends,並提供範例程式碼來幫助你輕鬆獲取台灣地區的熱門搜尋趨勢。
Thumbnail
在這篇教學文章中,我們將展示如何使用 Python 和 pytrends 套件來取得 Google 趨勢(Google Trends)的熱門關鍵詞。我們會詳細說明如何安裝和設定 pytrends,並提供範例程式碼來幫助你輕鬆獲取台灣地區的熱門搜尋趨勢。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News