Elasticsearch 基础教程

Elasticsearch 高级教程

Elasticsearch 插件

Elasticsearch 笔记

elasticsearch 文本字段索引类型 text 和 keyword 区别及使用

Elasticsearch 笔记 Elasticsearch 笔记


es 从 5.0 版本之后,将废弃原来的 string 类型,并将其拆分成两个新的类型 text 类型和 keyword 类型,它们的区别是什么,在何种场景使用?

区别

最限制的区别是 text 类型是通过分词用于全文搜索,而 keyword 类型用于关键字的精确匹配,具体区别如下图:

类型 分词 精确查询 模糊查询 聚合
text 分词后,再索引 支持 支持 不支持
keyword 不分词索引 支持 支持 支持

使用

如果不显性指定字段类型,Elasticsearch 将字符串默认被同时映射成 text 和 keyword 类型,会自动创建如下的动态映射(dynamic mappings):

      ...
      "question_content": {
        "type": "text",
        "fields":{
          "keyword":{
            "ignore_above":256,
            "type":"keyword"
          }
        }
      },
      ...

如上,本质上生成了两个字段 question_content 的 text 类型字段和 question_content.keyword 的 keyword 类型字段。