1 概念
1.1 索引index
es的服务中,可以创建多个索引;
每一个索引默认被分成5片存储;
每一个分片都会至少存在一个备份分片;
备份分片不会帮助检索数据,当es检索压力特别大的时候,备份分片才会帮助检索数据。
备份分片必须放在不同的服务器中。
1.2 类型type
一个索引下,可以创建多个类型;
版本不同,创建的类型也不同;
1.3 文档doc
一个类型下,可以有多个文档。这个文档就类似于mysql的一个表里面的多行数据。
1.4 属性field
一个文档中可以包含多个属性。类似于mysql的一行数据存在多个列。
2.操作es的restful语法
2.1 get请求
http://ip.port/index ,查询索引信息
http://ip.port/index/type/doc_id ,查询指定文档信息
2.2 post请求
http://ip.port/index/type/_search ,查询可以在请求体中添加sjon字符串来代表查询条件
2.3 put请求
http://ip.port/index ,创建一个索引,在请求体中指定索引信息
http://ip.port/index/type/_mappings ,代表创建索引时,指定索引文档存储的属性的信息
2.4 delete请求
http://ip.port/index ,删除索引
http://ip.port/index/type/doc_id ,删除指定的文档信息
3.索引的操作
3.1.创建索引
其中person是索引名称,number_of_replicas是备份数量,number_of_shards是分片数量.
PUT /person
{
"settings": {
"number_of_replicas": 1,
"number_of_shards": 5
}
}
3.2 查看索引信息
GET /person
3.3 删除索引
DELETE /person
4.ES中field可以指定的类型
4.1 String字符串类型
text :一般被用于全文检索,将当前field进行分词。
keyword:当前field不会被分词。
4.2 数值类型
long,integer,short,byte,double,float,half_float,scaled_float
4.3 时间类型
date类型,针对时间指定的类型
4.4 布尔类型
表达true和false的类型
4.5 二进制类型
暂时支持base64编码格式
4.6 范围类型
long_range:赋值时候,无需指定具体的内容,只需要指定存储一个范围,可指定gt,lt,gte,lte
integer_range,double_range,float_range,date_range,ip_range通上。
4.7 经纬度类型
geo_point: 用来定位经纬度的
4.8 ip类型
ip:用来存储ip V4和ip V6数据类型
4.9 其他数据类型
见官网
5.操作示例
#索引名称
PUT /book
{
"settings": {
#备份数
"number_of_replicas": 1,
#分盘数
"number_of_shards": 5
},
"mappings": {
#type名称
"story":{
#properties放属性集合
"properties":{
"name":{
"type":"text",
#该属性能否被索引,默认true
"index":true,
#指定分析器(不使用ik不能对中文进行分析)
"analyzer":"ik_max_word",
#是否备份,默认false
"store":false
},
"author":{
"type":"keyword"
},
"count":{
"type":"long"
},
"onSale":{
"type":"date",
#日期格式
"format":"yyyy/MM/dd HH:mm:ss||yyyy/MM/dd"
},
"desc":{
"type":"text"
}
}
}
}
}