ElasticSearch 学习记录之Text keyword 两种基本类型区别

ElasticSearch 系列文章

1 ES 入门之一 安装ElasticSearcha

2 ES 记录之如何建立一个索引映射

3 ElasticSearch 学习记录之Text keyword 两种基本类型区别

4 ES 入门记录之 match和term查询的区别

5 ElasticSearch 学习记录之ES几种常见的聚合操做

6 ElasticSearch 学习记录之父子结构的查询

7 ElasticSearch 学习记录之ES查询添加排序字段和使用missing或existing字段查询

8 ElasticSearch 学习记录之ES高亮搜索

9 ElasticSearch 学习记录之ES短语匹配基本用法

10 ElasticSearch 学习记录之 分布式文档存储往ES中存数据和取数据的原理

11 ElasticSearch 学习记录之集群分片内部原理

12 ElasticSearch 学习记录之ES如何操做Lucene段

13 ElasticSearch 学习记录之如任何设计可扩容的索引结构

14 ElasticSearch之 控制相关度原理讲解







ES 中 Text keyword 两种基本类型区别

  • string字段被拆分红两种新的数据类型: text用于全文搜索的, 而keyword用于关键词搜索.
  • 字符串将默认被同时映射成text和keyword类型,就像下面的这种结构

动态映射(dynamic mappings)html

"name": {
              "type": "text",
              "fields": {
                 "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                 }
              }
           }
  • 于这个映射你便可以在foo字段上进行全文搜索, 也能够经过foo.keyword字段实现关键词搜索及数据聚合
  • 如何将新旧的版本迁移

全文索引的字段app

{
    "foo": {
        "type": "string",
        "index": "analyzed"
    }
}

{
    "foo": {
        "type": "text",
        "index": true
    }
}

不索引 关键词搜索elasticsearch

{
    "foo": {
        "type": "string",
        "index": "not_analyzed"
    }
}

{
    "foo": {
        "type": "keyword",
        "index": true
    }
}