一文读懂ElasticSearch中字符串keyword和text类型区别_elasticsearch text和keyword
在ElasticSearch中,字符串字段类型keyword
和text
有明显的区别:
keyword
类型:- 被用于需要精确匹配的字符串,例如:品牌名、国家名等。
- 不分析,保留原始输入。
- 适用于索引结构化的数据。
text
类型:- 用于全文搜索的字符串,例如:产品描述、用户评论等。
- 分析(通过分析器),以便进行全文搜索。
- 索引时会将文本转换为词频格式,便于检索。
举例说明:
假设有一个ElasticSearch文档,包含品牌名称和产品描述两个字段。
{
"brand": "Huawei",
"description": "The Huawei P30 is a beautiful smartphone with great camera quality."
}
如果你想要对"brand"字段进行精确匹配搜索,你应该将其定义为keyword
类型。
{
"mappings": {
"properties": {
"brand": {
"type": "keyword"
},
"description": {
"type": "text"
}
}
}
}
如果你想要对"description"字段进行全文搜索,你应该将其定义为text
类型。
{
"mappings": {
"properties": {
"brand": {
"type": "keyword"
},
"description": {
"type": "text",
"analyzer": "standard" // 使用标准分析器
}
}
}
}
在这个例子中,brand
字段被设置为keyword
类型,这意味着当用户搜索"Huawei"时,只有完全匹配"Huawei"的文档才会被找到。而description
字段被设置为text
类型,这意味着当用户搜索"smartphone"时,包含"smartphone"一词的所有文档都可能被找到,因为ElasticSearch会对描述字段中的文本进行分析和索引。
评论已关闭