面试题答案
一键面试- ElasticSearch自动确定字段映射类型的方式:
- 数字检测:如果字段值是数值形式(如
123
),ElasticSearch 会尝试识别为long
(长整型)或double
(双精度浮点型)等数字类型。例如,若所有值都是整数,可能识别为long
;若包含小数,则可能识别为double
。 - 日期检测:对于类似日期格式的值,如
2023 - 10 - 01
,ElasticSearch 能识别为日期类型。它有多种内置的日期格式识别模式。 - 字符串检测:一般情况下,字符串字段会被识别为
text
类型,并自动生成一个keyword
子字段用于精确匹配。例如,字符串"Hello World"
会默认映射为text
类型,同时有一个对应的keyword
字段。对于纯数字的字符串,若不满足数字类型检测规则(如包含前导零等特殊情况),也会被识别为字符串。
- 数字检测:如果字段值是数值形式(如
- 手动干预映射类型的方法及举例:
- 创建索引时指定映射:
在上述例子中,创建PUT my_index { "mappings": { "properties": { "my_field": { "type": "integer" } } } }
my_index
索引时,手动指定my_field
字段类型为integer
,这样就不会依赖自动映射。 - 更新索引映射:若索引已存在,可以使用如下方式更新映射。例如,要为已存在的索引
my_index
添加一个新字段并指定映射:
这里为PUT my_index/_mapping { "properties": { "new_field": { "type": "date", "format": "yyyy - MM - dd" } } }
my_index
索引添加了一个new_field
字段,并指定为日期类型且明确了日期格式。
- 创建索引时指定映射: