Elasticsearch 分词与字段类型(keyword vs. text)面试题

Elasticsearch 分词与字段类型(keyword vs. text)面试题

目录

  • 基础概念
  • 底层存储
  • 查询影响
  • 多字段
  • 聚合与排序
  • 分词器
  • 实战排查
  • 总结

基础概念

问题1:Elasticsearch 中的 keyword 和 text 类型有什么区别?

查看参考答案
对比项 keyword text
分词(Analysis) ❌ 不进行分词,存储原始字符串 ✅ 存入时先分词(如标准分词器)
搜索方式 只能精确匹配(如 term 查询) 支持全文检索(如 match 查询)
适用场景 精确匹配、聚合、排序(如 status、ID) 全文搜索(如 article、description)
是否支持 DocValues ✅ 默认支持(适合排序/聚合) ❌ 默认不支持(除非启用 fielddata)

底层存储

️ 问题2:keyword 和 text 类型在倒排索引中的存储方式有何不同?

查看参考答案
keyword:
  • 整个字符串作为**一个词项(term)**存入倒排索引
  • 例如 “error” 会直接存储为 error,搜索时必须完全匹配
text:
  • 字符串会被分词器拆分成多个词项
  • 例如 “Quick Fox” 可能被拆分为 ["quick", "fox"],支持部分匹配

查询影响

问题3:以下查询会返回什么结果?为什么?

PUT /test_index
{
   
  "mappings": {
   
    "properties": {
   
      "title": {
    "type": "text"

你可能感兴趣的:(es,elasticsearch)