转:

  • 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
  • 本文链接:https://blog.csdn.net/liuxiao723846/article/details/78444472

mapping的写入与查看
   使用elasticsearch保存数据之前创建索引非常关键,一个好的索引使后续业务的查询更加方便快捷,我们创建索引时如果不指定相关信息,会按照默认设置创建,如果我们想要更加强大的功能,比如中文检索、拼音检索、首拼检索,就需要我们自己规划索引的创建,一般索引创建后不能更改,所以创建索引时要特别注意。下面是创建索引的最基础的步骤,供新手们参考。

以下POST命令如果执行不成功可以换成PUT尝试,本人在kibana软件中亲测有效。

1、首先创建一个索引:

curl -XPOST "http://127.0.0.1:9200/productindex"

命令执行正常则返回:{"acknowledged":true}

现在只创建了一个索引,并没有设置mapping,查看一下索引mapping的内容:
curl -XGET "http://127.0.0.1:9200/productindex/_mapping?pretty" 
{
  "productindex" : {
    "mappings" : { }
  }
}

2、给索引添加属性

可以看到mapping为空,我们只创建了一个索引,并没有进行mapping配置,mapping自然为空。 
下面给productindex这个索引加一个type,type name为product,并设置mapping:
curl -XPOST "http://127.0.0.1:9200/productindex/product/_mapping?pretty" -d ' 
{
    "product": {
            "properties": {
                "title": {
                    "type": "string",
                    "store": "yes"
                },
                "description": {
                    "type": "string",
                    "analyzer": "standard"
                },
                "price": {
                    "type": "double"
                },
                "onSale": {
                    "type": "boolean"
                },
                "type": {
                    "type": "integer"
                },
                "createDate": {
                    "type": "date"
                }
            }
        }
  }

命令执行正常则返回:{"acknowledged" : true}

3、查看mapping结果
上面的操作中,我们给productindex加了一个type,并写入了product的mapping信息,再次查看:
curl -XGET "http://127.0.0.1:9200/productindex/_mapping"
{
  "productindex" : {
    "mappings" : {
      "product" : {
        "properties" : {
          "createDate" : {
            "type" : "date",
            "format" : "strict_date_optional_time||epoch_millis"
          },
          "description" : {
            "type" : "string",
            "analyzer": "standard"
          },
          "onSale" : {
            "type" : "boolean"
          },
          "price" : {
            "type" : "double"
          },
          "title" : {
            "type" : "string",
            "store" : true
          },
          "type" : {
            "type" : "integer"
          }
        }
      }
    }
  }
}

4、修改mapping(新增一个新字段)
如果想给product新增一个字段,那么需要修改mapping,尝试一下:
curl -XPOST "http://127.0.0.1:9200/productindex/product/_mapping

{
     "product": {
                "properties": {
                     "amount":{
                        "type":"integer"
                   }
                }
            }
    }'
{

5、修改mapping(修改原有字段)  
如果要修改一个字段的类型呢,比如onSale字段的类型为boolean,现在想要修改为string类型,尝试一下:
 curl -XPOST "http://127.0.0.1:9200/productindex/product/_mapping

{
     "product": {
                "properties": {
                 "onSale":{
                    "type":"string" 
               }
            }
        }
}
返回错误:
{
  "error" : {
    "root_cause" : [ {
      "type" : "illegal_argument_exception",
      "reason" : "mapper [onSale] of different type, current_type [boolean], merged_type [string]"
    } ],
    "type" : "illegal_argument_exception",
    "reason" : "mapper [onSale] of different type, current_type [boolean], merged_type [string]"
  },
  "status" : 400
}

为什么不能修改一个字段的type?原因是一个字段的类型修改以后,那么该字段的所有数据都需要重新索引。Elasticsearch底层使用的是lucene库,字段类型修改以后索引和搜索要涉及分词方式等操作,不允许修改类型在我看来是符合lucene机制的。

【Elasticsearch】Elasticsearch索引的创建、查看及修改的更多相关文章

  1. ES(ElasticSearch) 索引创建

    个人分类: ElasticSearchindex   环境:ES 6.2.2 os:Centos  7 kibana:6.2.2 1.创建新的索引(index) PUT indexTest001 结果 ...

  2. Elasticsearch 使用集群 - 创建索引

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  3. Mysql中索引的 创建,查看,删除,修改

    创建索引 MySQL创建索引的语法如下: ? 1 2 3 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON ...

  4. Elasticsearch 5.4.3实战--Java API调用:索引mapping创建

    因为项目开发使用的是Java语言, 项目的开发架构是Spring MVC+ maven的jar包管理,  所以今天重点说说ES 5.4.3 的Java API的源码实战 1. pom.xml文件增加依 ...

  5. ElasticSearch基本操作(安装,索引的创建和删除,映射)

    ElasticSearch基于Lucene的搜索服务器,支持分布式,提供REST接口,可用于云计算,可以实现实时搜索,开源免费.这时很官方的一句话,在使用之前,我们简单的介绍一下安装过程.在官网下载之 ...

  6. ES 10 - Elasticsearch的索引别名和索引模板

    目录 1 索引模板概述 1.1 什么是索引模板 1.2 索引模板中的内容 1.3 索引模板的用途 2 创建索引模板 3 查看索引模板 4 删除索引模板 5 模板的使用建议 5.1 一个index中不能 ...

  7. 数组如何在ElasticSearch中索引

    一.简介 在ElasticSearch里没有专门的数组类型,任何一个字段都可以有零个和多个值.当字段值的个数大于1时,字段类型就变成了数组. 下面以视频数据为例,介绍ElasticSearch如何索引 ...

  8. ES 18 - (底层原理) Elasticsearch写入索引数据的过程 以及优化写入过程

    目录 1 Lucene操作document的流程 1.1 添加document的流程 1.2 删除document的流程 2 优化写入流程 - 实现近实时搜索 2.1 流程的改进思路 2.2 设置re ...

  9. elasticsearch的索引操作和文档操作总结

    参考文档:https://es.xiaoleilu.com/010_Intro/00_README.html 一.索引操作 1.查看当前节点的所有的index 查看当前节点的所有的index [roo ...

随机推荐

  1. Git学习及使用

    一.认知git理论 1.git出现的背景 版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上 ...

  2. eclipse下实现热部署,tomcat不重新reload context

    1. 打开server的编辑器 2. 在modules页签内,修改auto load属性为disabled

  3. Vue混入:全局混入

    一 项目结构 二 main.js import Vue from "vue"; import App from "./App.vue"; Vue.config. ...

  4. Python笔记(十四)_永久存储pickle

    pickle模块:将所有的Python对象转换成二进制文件存放 应用场景:编程时最好将大对象(列表.字典.集合等)用pickle写成永久数据包供程序调用,而不是直接写入程序 写入过程:将list转换为 ...

  5. Hadoop: 在Azure Cluster上使用MapReduce

    Azure对于学生账户有260刀的免费试用,火急火燎地创建Hadoop Cluster!本例子是使用Hadoop MapReduce来统计一本电子书中各个单词的出现个数. Let's get hand ...

  6. [LeetCode] 4. Median of Two Sorted Arrays(想法题/求第k小的数)

    传送门 Description There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the m ...

  7. git报错-Initial commit Untracked files nothing added to commit but untracked ……

    文章转自 https://www.jianshu.com/p/61c3db30d488 在目标执行命令 git stratus 报错 根据上面的文章,可以解决问题.不行的话,请留言. 感谢你的阅读

  8. Map遍历方式

    entrySet 推荐 最常用,性能很好 示例: for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out ...

  9. knn 数据集准备

    """ Created on Mon Aug 26 20:57:24 2019 @author: huoqs knn algorithm ""&quo ...

  10. ios overflow:scroll不顺畅解决办法

    是要在其样式里面添加这段代码就行  -webkit-overflow-scrolling: touch;