面试题答案
一键面试字段类型选择
- 姓名:
- 类型:
text
类型用于全文搜索,同时使用keyword
类型用于精确匹配。 - 分析器:对于
text
类型,可选择适合该语言的分析器,如中文可选ik_max_word
分析器,它能进行细粒度的分词,利于全文搜索。keyword
类型不进行分词,直接用于精确匹配,无需设置分析器。 - 好处:
text
类型分词后可用于全文搜索,满足用户模糊查找姓名的需求,keyword
类型可用于精确匹配,如根据全名查询特定用户。
- 类型:
- 年龄:
- 类型:
integer
类型。 - 分析器:无需分析器,因为年龄是数值,不是文本,不需要分词。
- 好处:
integer
类型占用空间小,并且能高效地进行范围查询,如查询年龄在某个区间的用户。
- 类型:
- 地址:
- 类型:
text
类型。 - 分析器:可选择适合地址文本特点的分析器,如中文地址可选
ik_max_word
分析器,能对地址文本进行有效分词,方便全文搜索。 - 好处:可以对地址进行全文搜索,例如用户搜索包含某个小区名或街道名的地址。
- 类型:
- 联系方式:
- 类型:
keyword
类型。 - 分析器:无需分析器,联系方式通常是精确的字符串,无需分词。
- 好处:适合精确匹配,如通过电话号码或邮箱地址精确查找用户。
- 类型:
- 兴趣爱好:
- 类型:
text
类型。 - 分析器:根据具体兴趣爱好文本特点选择分析器,例如通用的
standard
分析器或者适合特定语言的分析器,方便对兴趣爱好进行全文搜索。 - 好处:支持全文搜索,比如搜索喜欢 “篮球” 的用户,能对兴趣爱好文本进行有效分词匹配。
- 类型:
Mapping 设计示例(以 Elasticsearch 为例)
{
"mappings": {
"properties": {
"姓名": {
"type": "text",
"analyzer": "ik_max_word",
"fields": {
"keyword": {
"type": "keyword"
}
}
},
"年龄": {
"type": "integer"
},
"地址": {
"type": "text",
"analyzer": "ik_max_word"
},
"联系方式": {
"type": "keyword"
},
"兴趣爱好": {
"type": "text",
"analyzer": "standard"
}
}
}
}
这样设置能充分利用不同字段类型和分析器的特点,实现高效的全文搜索、精确匹配以及范围查询等功能,满足对用户信息文档索引的多样化搜索需求。