索引的创建及删除
1. 通过索引一篇文档创建了一个新的索引 。这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射。
利用Kibana提供的DevTools来执行命令,要创建一个索引
put /sdb (其中sdb为一个索引)
创建成功后会返回如下结果
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "sdb"
}
如果你想禁止自动创建索引,你 可以通过在 config/elasticsearch.yml
的每个节点下添加下面的配置:
action.auto_create_index: false
{
"sdb" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"creation_date" : "1552621484634",
"number_of_shards" : "5", //每个索引的主分片数,默认值是 5 。这个配置在索引创建后不能修改。
"number_of_replicas" : "1", //每个主分片的副本数,默认值是 1 。对于活动的索引库,这个配置可以随时修改。
"uuid" : "PQ1TSt5hQOua_cUAegrYmw",
"version" : {
"created" : "6060299"
},
"provided_name" : "sdb"
}
}
} }
如果想修改副本数,可以用 update-index-settings
API 动态修改副本数:
PUT /sdb/_settings
{
"number_of_replicas": 1
}
再次使用GET /sdb进行查看
上面我们说了如何创建一个索引,那么接下来我们来说说如何删除一个索引
DELETE /sdb
删除成功后会有以下提示:
{
"acknowledged" : true
}
mapping映射
映射是创建索引的时候,可以预先定义字段的类型以及相关属性
Elasticsearch会根据JSON源数据的基础类型去猜测你想要的字段映射。将输入的数据变成可搜索的索引项。Mapping就是我们自己定义字段的数据类型,同时告诉Elasticsearch如何索引数据以及是否可以被搜索。
作用:会让索引建立的更加细致和完善
类型:静态映射和动态映射
静态映射
动态映射
什么是动态映射
文档中碰到一个以前没见过的字段时,动态映射可以自动决定该字段的类型,并对该字段添加映射
如何配置动态映射
- 通过dynamic属性进行控制
- true:默认值,动态添加字段; false:忽略新字段; strict:碰到陌生字段,抛出异常
适用范围
适用在根对象上或者object类型的任意字段上
内置类型
string类型: text,keyword(string类型在es5已经被弃用)
数字类型:long, integer, short, byte, double, float
日期类型: date
bool类型: boolean
binary类型: binary
复杂类型: object ,nested
geo类型: point , geo-shape
专业类型: ip, competion
mapping 限制的type
创建mapping
PUT lagou
{
"mappings": {
"job":{
"properties": {
"title":{ //title 字段
"type":"text" //类型设置,text类型可分词
},
"salary_min":{
"type":"integer"
},
"city":{
"type": "keyword" //keyword关键词,不可分词
},
"company":{ //该字段下有多个键值对
"properties": {
"name":{
"type":"text"
},
"company_addr":{
"type":"text"
},
"employee_count":{
"type":"integer"
}
}
},
"publish_date":{
"type":"date",
"format": "yyyy-MM-dd"
},
"comments":{
"type": "integer"
}
}
}
}
}
PUT lagou/job/1
#当类型不符合的时候他会尝试去转换类型,比如字符串的数字和数字类型,但是如果无法转换就会报错。
{
"title":"python分布式web开发",
"salary_min":15000,
"city":"北京",
"company":{
"name":"百度",
"company_addr":"软件园",
"employee_count":50
},
"publish_date":"2017-4-16",
"comments":15
}
#获取映射
GET lagou/_mapping GET lagou/_mapping/job GET _all/_mapping/job