MST

星途 面试题库

面试题:ElasticSearch存储字段的映射管理与性能优化

在ElasticSearch中,存储字段的映射对查询性能有重要影响。请阐述如何根据不同的业务查询需求,设计合理的存储字段映射以优化查询性能,例如在范围查询、全文检索场景下分别该如何设计。
21.1万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

范围查询

  1. 数据类型选择:确保字段映射为合适的数值类型,如 long 用于整数范围查询,double 用于浮点数范围查询。避免使用 keyword 类型,因为它不支持范围查询。例如,对于价格字段,映射为 double
{
    "mappings": {
        "properties": {
            "price": {
                "type": "double"
            }
        }
    }
}
  1. 索引设置:使用默认的 doc_values 功能,它可以提高范围查询性能,因为 doc_values 以列存储方式存储数据,有利于快速筛选范围数据。doc_values 默认对大多数数据类型开启。

全文检索场景

  1. 分析器选择:根据文本语言和业务需求选择合适的分析器。例如,对于英文文本,standard 分析器是一个不错的默认选择;对于中文,ik_max_word 等中文分词分析器可以提供更细粒度的分词。如:
{
    "mappings": {
        "properties": {
            "content": {
                "type": "text",
                "analyzer": "ik_max_word"
            }
        }
    }
}
  1. 多字段映射:可以创建一个 text 类型字段用于全文检索,同时创建一个 keyword 类型字段用于精确匹配。例如:
{
    "mappings": {
        "properties": {
            "title": {
                "type": "text",
                "analyzer": "standard"
            },
            "title.keyword": {
                "type": "keyword"
            }
        }
    }
}

这样既可以对 title 进行全文检索,又可以通过 title.keyword 进行精确查找。