"appId" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
關鍵點解析:
雙數(shù)據(jù)類型映射:
主字段類型 text:表示 appId 默認作為文本類型存儲,會被分詞器(Analyzer)拆分成詞項(如 "app-123" 拆分為 ["app", "123"]),支持全文檢索。
子字段 keyword:通過 fields 定義了一個名為 keyword 的子字段,類型為 keyword,用于精確值匹配(如聚合、排序、精確查詢)。
ignore_above 參數(shù):
當 appId 值的字符長度超過 256 時,keyword 子字段將不會索引該值(節(jié)省存儲空間),但原始值仍會存儲在 _source 中,可通過 appId 主字段查詢。
短于或等于 256 字符的值會被完整索引到 keyword 子字段中。
典型使用場景:
全文搜索:使用 appId 主字段(如 match 查詢)。
{ "query": { "match": { "appId": "app-123" } } }
精確匹配/聚合:使用 appId.keyword 子字段(如 term 查詢)。
{ "query": { "term": { "appId.keyword": "app-123" } } }