MST

星途 面试题库

面试题:ElasticSearch自动创建索引机制中的字段映射

在ElasticSearch自动创建索引时,它是如何确定字段的映射类型的?如果默认的映射类型不符合业务需求,如何手动干预?请举例说明。
23.7万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
  1. ElasticSearch自动确定字段映射类型的方式
    • 数字检测:如果字段值是数值形式(如123),ElasticSearch 会尝试识别为long(长整型)或double(双精度浮点型)等数字类型。例如,若所有值都是整数,可能识别为long;若包含小数,则可能识别为double
    • 日期检测:对于类似日期格式的值,如2023 - 10 - 01,ElasticSearch 能识别为日期类型。它有多种内置的日期格式识别模式。
    • 字符串检测:一般情况下,字符串字段会被识别为text类型,并自动生成一个keyword子字段用于精确匹配。例如,字符串"Hello World"会默认映射为text类型,同时有一个对应的keyword字段。对于纯数字的字符串,若不满足数字类型检测规则(如包含前导零等特殊情况),也会被识别为字符串。
  2. 手动干预映射类型的方法及举例
    • 创建索引时指定映射
      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字段,并指定为日期类型且明确了日期格式。