首页 > 技术文章 > es索引基本操作(2)之 索引映射(mappings)管理和索引库配置管理(settings)

niutao 2017-05-22 22:24 原文

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
}

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

原因:

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

 

推荐阅读