需要查找值内部的词时使用 text。需要整个值来过滤、排序或分组时使用 keyword。
比较同一个标题
假设商品标题为 Blue Shoes。如果 text 分析器会分词并转为小写,就会生成 blue 和 shoes。搜索 shoes 可以找到这个标题。
Keyword 表示把值保留为一个 term,并应用所配置的 normalizer。需要匹配完整标题,或按完整值对商品分组时,这种表示很有用。
需要查找值内部的词时使用 text。需要整个值来过滤、排序或分组时使用 keyword。
假设商品标题为 Blue Shoes。如果 text 分析器会分词并转为小写,就会生成 blue 和 shoes。搜索 shoes 可以找到这个标题。
Keyword 表示把值保留为一个 term,并应用所配置的 normalizer。需要匹配完整标题,或按完整值对商品分组时,这种表示很有用。
一个包含详细解答的 IT 面试题库——从初级到高级。
捐赠下面的映射片段定义了两种索引表示:
{
"properties": {
"title": {
"type": "text",
"fields": { "raw": { "type": "keyword" } }
}
}
}
在 title 上搜索词,在 title.raw 上按完整标题排序或聚合。Multi-field 表示将同一个输入以多种方式索引,而不是每个文档都发送两份副本。
两种表示都需要索引和存储。对于 published 这样的状态,只有 keyword 可能就足够。按完整标题分组时,优先使用 keyword 字段,而不是启用 text fielddata;后者会为这些操作加载已分析的词,可能消耗大量内存。
官方文档.