Elasticsearch 基础教程

Elasticsearch 高级教程

Elasticsearch 插件

Elasticsearch 笔记

Elasticsearch FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/elasticsearch-difference-between-type-text-and-keyword.html

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 类型字段。

在Elasticsearch中修改字段类型涉及到一些复杂的操作,因为一旦字段被创建后,其类型通常不能直接更改。示例代码:###CreateI ...
Elasticsearch和MySQL是两种不同类型的数据库系统,各自适用于不同的用途和场景。*MySQL:MySQL也提供查询功能,但相对 ...
在Django中,"date"是字段条件查询的一个关键字,用于在查询中对日期字段进行过滤。查找所有在特定日期之后的事件:查找所有在特定日期范 ...
Elasticsearch的最多使用的场景就是用它的查询API,它提供完备的查询功能以满足现实中的各种需求。如果请求中潜在的分片数量很大,则 ...
在Elasticsearch中,映射指的是mapping,用来定义一个文档以及其所包含的字段如何被存储和索引,可以在映射中事先定义字段的数据 ...