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
留言分享你的想法!
avatar-img
小猴工程師
2會員
30內容數
以工程師視角拆解技術與生活的連結。專長 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
雙11於許多人而言,不只是單純的折扣狂歡,更是行事曆裡預定的,對美好生活的憧憬。 錢錢沒有不見,它變成了快樂,跟讓臥房、辦公桌、每天早晨的咖啡香升級的樣子! 這次格編突擊辦公室,也邀請 vocus「野格團」創作者分享掀開蝦皮購物車的簾幕,「加入購物車」的瞬間,藏著哪些靈感,或是對美好生活的想像?
Thumbnail
雙11於許多人而言,不只是單純的折扣狂歡,更是行事曆裡預定的,對美好生活的憧憬。 錢錢沒有不見,它變成了快樂,跟讓臥房、辦公桌、每天早晨的咖啡香升級的樣子! 這次格編突擊辦公室,也邀請 vocus「野格團」創作者分享掀開蝦皮購物車的簾幕,「加入購物車」的瞬間,藏著哪些靈感,或是對美好生活的想像?
Thumbnail
雙11購物節準備開跑,蝦皮推出超多優惠,與你分享實際入手的收納好物,包括貨櫃收納箱、真空收納袋、可站立筆袋等,並分享如何利用蝦皮分潤計畫,一邊購物一邊賺取額外收入,讓你買得開心、賺得也開心!
Thumbnail
雙11購物節準備開跑,蝦皮推出超多優惠,與你分享實際入手的收納好物,包括貨櫃收納箱、真空收納袋、可站立筆袋等,並分享如何利用蝦皮分潤計畫,一邊購物一邊賺取額外收入,讓你買得開心、賺得也開心!
Thumbnail
分享個人在新家裝潢後,精選 5 款蝦皮上的實用家居好物,包含客製化層架、MIT 地毯、沙發邊桌、分類垃圾桶及寵物碗架,從尺寸、功能到價格都符合需求,並提供詳細開箱心得與購買建議。
Thumbnail
分享個人在新家裝潢後,精選 5 款蝦皮上的實用家居好物,包含客製化層架、MIT 地毯、沙發邊桌、分類垃圾桶及寵物碗架,從尺寸、功能到價格都符合需求,並提供詳細開箱心得與購買建議。
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
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
EasyOCR是一個能夠幫助你對圖片中的文字進行辨識的工具,透過進階分析,可以應用在文件掃描、自動化數據輸入、發票掃描等領域。本章節將介紹如何安裝、引用模型、進行文字辨識、以及辨識結果的分析。透過學習,你可以建立屬於自己的文字辨識系統。
Thumbnail
EasyOCR是一個能夠幫助你對圖片中的文字進行辨識的工具,透過進階分析,可以應用在文件掃描、自動化數據輸入、發票掃描等領域。本章節將介紹如何安裝、引用模型、進行文字辨識、以及辨識結果的分析。透過學習,你可以建立屬於自己的文字辨識系統。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News