【ElasticSearch 6.*】 学习四:基础知识和索引的创建
基础知识
- 索引:含有相同属性的文档集合(类似数据库)
- 类型:索引可以定义一个或者多个类型,文档必须属于一个类型(类似数据库中的表)
- 文档:文档是可以被索引的基本数据单位(类似表中的行数据)
- 分片:每个索引都有多个分片,每个分片都是一个Lucene索引
- 备份:拷贝一份分片就完成了分片的备份。
分片的好处:
索引数据量大,可以索引分成多个分片,分摊压力
备份的好处:
主分片失败或者出问题,备份分片可以代替主分片工作,备份分片可以进行搜索操作。
分片数量只能在创建索引时修改,备份可以后期修改。
结构化和非结构化的索引:结构化的关键词mappings
创建索引
- 利用head创建非结构化索引
tip
:框框皆为分片,粗框为主分片,细框为主分片的备用分片。 - 利用head创建非结构化索引
首先观察到·mappings
字段为空
利用RestFul api 请求:
api基本格式: http://<ip>:<port>/<索引>/<类型>/<文档id>
请求方式:[GET, DELETE, PUT, HEAD]
//book/novel/_mappings
{
"novel": {
"properties": {
"title": {
"type": "text"
}
}
}
}
请求完毕之后,查看索引信息发现 mappings字段增加了数据,这就是创了结构化索引。
postman 请求接口造索引
请求参数:
{
"settings":{
"number_of_shards":3,//分片数
"number_of_replicas":1//副本数
},
"mappings":{
"man":{
"properties":{
"name":{
"type":"text"
},
"country":{
"type":"keyword"
},
"age":{
"type":"integer"
},
"date":{
"type":"date",
"format":"yyyy-MM-dd HH-mm-ss||yyyy-MM-dd"
}
}
}
}
}
head查看结果
tip:
如果man同级加设置多个(增加个women设置),则会报错
{
"error":{
"root_cause":[
{
"type":"illegal_argument_exception",
"reason":"Rejecting mapping update to [people] as the final mapping would have more than 1 type: [woman, man]"
}
],
"type":"illegal_argument_exception",
"reason":"Rejecting mapping update to [people] as the final mapping would have more than 1 type: [woman, man]"
},
"status":400
}
原因:在Elasticsearch 6.0.0或更高版本中创建的索引可能只包含单个mapping type。在具有多种映射类型的5.x中创建的索引将继续像以前一样在Elasticsearch 6.x中运行。映射类型将在Elasticsearch 7.0.0中完全删除。