一文读懂ElasticSearch中字符串keyword和text类型区别
warning:
这篇文章距离上次修改已过204天,其中的内容可能已经有所变动。
在ElasticSearch中,字符串字段类型keyword
和text
有明显的区别:
keyword
类型是用于索引结构化的字符串数据,比如:邮箱地址、状态码和标签等,它不分析这些文本,并且不将其展平。这意味着当你搜索这些字段时,需要完全匹配。text
类型是用于索引全文内容的,比如:邮件正文、产品描述等。ElasticSearch会对这些文本进行分析,包括分词(Tokenizing)、去除停用词(Stop words)、字符串处理等步骤。这些处理让text
类型的字段可以支持全文搜索,例如模糊搜索、短语搜索等。
在实际应用中,你可以这样定义一个ElasticSearch映射(Mapping):
{
"properties": {
"email": {
"type": "keyword"
},
"content": {
"type": "text"
}
}
}
在这个例子中,email
字段被定义为keyword
类型,这意味着它被用于结构化搜索,而content
字段被定义为text
类型,这意味着它支持全文搜索。
如果你想对email
字段进行全文搜索,那么你需要将其字段类型改为text
,然后重新索引数据。相反,如果你想对content
字段进行精确匹配搜索,那么你需要将其字段类型改为keyword
。
评论已关闭