带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(下)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(下)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用—— 3.4.2.2.理解mapping(中) https://developer.aliyun.com/article/1231103



创建/更新映射

 

当你首次创建一个索引的时候,可以指定类型的映射。你也可以使用 /_mapping 更新映射。

 

我们可以更新一个映射来添加一个新字段,但不能更新一个现有的 mapping把它的字段类型从一个变为另外一个,比如从 text 变为 keyword。我们可以在维持现有 mapping 的情况下,把一个字段变成一个 multi-field 字段。

 

为了描述指定映射的两种方式,我们先删除 twitter 索引:


DELETE twitter

创建一个新索引,指定 message 字段使用 cjk 分析器:


PUT twitter
{
  "settings": {
    "number_of_shards": "5",
    "number_of_replicas": "1"
  },
  "mappings": {
    "properties": {
      "user": {
        "type": "keyword"
      },
      "post_date": {
        "type": "date"
      },
      "message": {
        "type": "text",
        "analyzer": "cjk"
      }
    }
  }
}

通过消息体中指定的 mappings 创建了索引映射,索引设置 settings 中通过 number_of_shards 指定分片数,number_of_replicas 指定副本数。

 

给映射增加一个新的名为 tag 的 keyword 类型字段,使用 _mapping :


PUT twitter/_mapping
{
  "properties": {
    "tag": {
      "type": "keyword"
    }
  }
}

我们不需要再次列出所有已存在的字段,因为无论如何我们都无法改变它们,新字段已经被合并到存在的映射中。

 

测试映射

 

可以使用 analyze API 测试字符串字段的映射,比较下面两个请求的输出:


GET /twitter/_analyze
{
  "field": "message",
  "text": "搜索引擎" 
}
GET /twitter/_analyze
{
  "field": "tag",
  "text": "搜索引擎" 
}

消息体里面传入我们想要分析的文本。message 字段产生 3 个词条“搜索”、“索引”和“引擎”, tag 字段产生单独的词条“搜索引擎”,换句话说,我们的映射正常工作。

 

 

 

 

 

 

 

 

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 JSON 数据库
带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(上)
带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(上)
|
数据格式 索引
带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(中)
带你读《Elastic Stack 实战手册》之17:—— 3.4.2.2.理解mapping(中)
|
自然语言处理
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(4)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(4)
|
JSON Java 数据格式
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(3)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(3)
|
存储 Java 大数据
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(6)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(6)
|
索引
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(2)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(2)
|
索引
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(1)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(1)
|
JSON 数据格式
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(5)
带你读《Elastic Stack 实战手册》之25:——3.4.2.10.Dynamic Mapping(5)
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
103 0
|
存储 运维 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
256 0