面试题答案
一键面试范围查询
- 数据类型选择:确保字段映射为合适的数值类型,如
long
用于整数范围查询,double
用于浮点数范围查询。避免使用keyword
类型,因为它不支持范围查询。例如,对于价格字段,映射为double
:
{
"mappings": {
"properties": {
"price": {
"type": "double"
}
}
}
}
- 索引设置:使用默认的
doc_values
功能,它可以提高范围查询性能,因为doc_values
以列存储方式存储数据,有利于快速筛选范围数据。doc_values
默认对大多数数据类型开启。
全文检索场景
- 分析器选择:根据文本语言和业务需求选择合适的分析器。例如,对于英文文本,
standard
分析器是一个不错的默认选择;对于中文,ik_max_word
等中文分词分析器可以提供更细粒度的分词。如:
{
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "ik_max_word"
}
}
}
}
- 多字段映射:可以创建一个
text
类型字段用于全文检索,同时创建一个keyword
类型字段用于精确匹配。例如:
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "standard"
},
"title.keyword": {
"type": "keyword"
}
}
}
}
这样既可以对 title
进行全文检索,又可以通过 title.keyword
进行精确查找。