es关键词
索引:含有相同属性的文档集合
必须是英文字母小写,且不含中划线
类型: 索引可以定义一个或多个类型,文档必须属于一个类型
文档:文档是可以被索引的基本数据单位,是ES中的最小存储单位
分片:每个索引都有多个分片,每个分片是一个Lucene索引
ES索引默认5个分片,分片指定后不可以修改,备份数可以修改。
备份:拷贝一份分片就完成了分片的备份
问题:为什么要有分片和备份
1、假设索引数据量大,造成硬盘压力大,搜索速度出现瓶颈,将索引分为多个分片,分摊压力,分片也允许用户进行水平扩展和拆分,以及分布式的操作,可以提高搜索的效率
2、主分片失败或者出现问题时,备份的分片可以代替工作,提高了es的可用性,备份的分片还可以执行搜索操作,分摊搜索的压力
es与mysql对比
es mysql
索引 数据库
类型 表
文档 一行数据记录
es 基本用法
API基本格式 http://<ip>:<port>/<索引>/<类型>/<文档id>
常用HTTP动词 GET/PUT/POST/DELETE
创建索引:
PUT http://localhost:9200/people
Content-Type:application/json; charset=utf-8
{
"settings": { ## 关键词,指定索引配置
"number_of_shards": 3, ## 设置索引分片数
"number_of_replicas": 1 ## 设置索引备份数
},
"mappings": { ## 索引映射定义
"man": { ## 类型,mysql表
"properties": { ## 属性,表字段集合
"name": { ## 名字,相当于mysql字段名称
"type": "text" ## 名字类型,mysql字段类型
},
"country": { ##
"type": "keyword" ##
},
"age": { ##
"type": "integer" ##
},
"date": { ##
"type": "date", ##
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" ##时间格式化
}
}
},
"woman": { ##新的类型,另一个表
}
}
}
put http://localhost:9200/people
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"data": {
"properties": {
"name": {
"type": "text"