• es索引基本操作(2)之 索引映射(mappings)管理和索引库配置管理(settings)


    1:索引的映射管理

    elasticsearch中的文档等价于java中的对象 , 那么在java对象中有字段(比如string、int、long等);

    同理在elasticsearch索引中的具体字段也是有类型的;

    第一步:默认的插入操作:

    PUT /document/article/1
    {
    "title" : "elasticsearchshi是是什么",
    "author" : "zhangsan",
    "titleScore" : 60
    }

    这种操作并没有指定字段类型,那么elasticsearch会自动根据数据类型的格式识别字段的类型;

    第二步:查看索引字段类型:

    GET /document/article/_mapping

    第三步:再插入一条数据:

    PUT /document/article/2
    {
    "title" : "elasticsearchshi是是什么",
    "author" : "zhangsan",
    "titleScore" : 66.666
    }

    第四步:GET /document/article/2

    上面的操作可能出现的问题:

    1):第一步插入过程中titleScore走默认模式创建,为Long类型

    2):第三步插入操作,依然能够将"titleScore" : 66.666插入

    3):如果此时对接java,做数据的查询封装操作会出现:精度损失现象

    综上所述,在实际生产中,创建索引的时候,为了避免上述问题发生以及后续开发过程中可能使用IK分词器,需要进行索引的映射管理

    PUT document
    {
    "mappings": {
      "article" : {
        "properties":
        {
          "title" : {"type": "text"} ,
          "author" : {"type": "text"} ,
          "titleScore" : {"type": "double"}
           
        }
      }
    }
    }

    查询映射信息:

    GET /document/article/_mapping

    2:索引库配置管理(settings)

    所谓的settings就是用来修改索引分片和副本数的;

    比如有的重要索引,副本数很少甚至没有副本,那么我们可以通过setting来添加副本数:

    PUT document
    {
    "mappings": {
      "article" : {
        "properties":
        {
          "title" : {"type": "text"} ,
          "author" : {"type": "text"} ,
          "titleScore" : {"type": "double"}
           
        }
      }
    }
    }

    GET /document/_settings

    2.1:修改副本数

    PUT /document/_settings
    {
    "number_of_replicas": 2
    }

    然后在查询副本数:GET /document/_settings

    2.2:修改分片数

    PUT /document/_settings
    {
    "number_of_shards": 3
    }

    此命令一旦执行,会报错;

    原因:

    当索引不存在的时候,可以指定副本数和分片数
    当索引存在的时候,只能指定副本数

     

  • 相关阅读:
    Mysql 数据库学习笔记03 存储过程
    Mysql 数据库学习笔记02 编程
    Mysql 数据库学习笔记01查询
    Struts2学习笔记04 之 拦截器
    Struts2学习笔记03 之 Result组件
    Group by与having理解
    Spring Assert断言工具类
    字符集、编码
    hibernate中Query的list和iterator区别(续)
    hibernate中Query的list和iterator区别
  • 原文地址:https://www.cnblogs.com/niutao/p/10908976.html
Copyright © 2020-2023  润新知