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
}
此命令一旦执行,会报错;
原因:
当索引不存在的时候,可以指定副本数和分片数
当索引存在的时候,只能指定副本数