》继续上次的学习
【07.Redis的结构】
三.ElasticSearch基本操作
3.1 ES的结构
》ES是如何存储数据的
ES服务
1、ES可以搭建集群,会对索引进行分片,默认一个索引分五片
好处:扩大容量,提升检索效率
2、ES会对索引进行备份,从分片一般情况不会分担查询压力。
好处:避免数据丢失,高可用
ES的索引 相当于mysql的数据库
ES的索引分为类型type,相当于mysql的表
ES5.x版本中,一个index可以创建多个type;
ES6.x版本中,一个index可以创建一个type;(以下以此为主)
ES7.x版本中,一个index没有type;
ES的type下的文档(document),相当于mysql表中的每条记录;
ES的type下的文档(document),分为field(属性),相当于mysql中记录的字段
3.1.1 索引index,分片和备份
ES的服务中,可以创建多个索引;
每个索引默认被分成5片存储;
每个分片都会存在至少一个备份分片;
备份分片默认不会帮助检索数据,当ES检索压力特别大的时候,备份分片才会帮助检索数据;
备份的分片必须放在不同的服务器中;
3.1.2类型Type
一个索引下,可以创建多个类型;
PS:根据版本不同,类型的创建数量不同;
3.1.3文档Doc
一个类型下,可以有多个文档,这个文档就类似于mysql中的多行数据。
3.1.4属性field
一个文档中,可以包含多个属性,类似于mysql表中的一行数据存在多个列。
【08ES的restful语法】
3.2 操作ES的restful语法
restful语法:根据请求方式不同,决定操作业务是什么
1 get请求:
http://ip:port/index:查询索引信息
http://ip:port/index/type/doc_id:查询指定的文档信息
2.post请求
http://ip:port/index/type/_search:查询,可以在请求体中添加json字符串代表查询条件
http://ip:port/index/type/doc_id/_update:修改文档,在请求体中指定json字符串代表修改的具体信息
3.put请求
http://ip:port/index:创建一个索引,需要在请求体中指定索引的信息,类型,结构;
http://ip:port/index/type/_mappings:代表创建索引时,指定索引文档存储的属性的信息
4.Delete请求
http://ip:port/index:删除跑路(慎用操作)
http://ip:port/index/type/doc_id:删除指定的文档
请求方式和路径后追加的内容不同,来决定处理
【09ES索引的操作】
3.3索引的操作
3.3.1创建一个索引
先创建一个简单的索引,只有分片和备份,不指定结构化数据。
索引名称、分片和备份
使用management查看创建结果,其中健康为黄色是因为此处为单机备份,单机备份并没有实际效用
3.3.2 查看索引信息
方式一:使用kibana图形化界面-management。
方式二:kibana的restful语言
注意:鼠标要放在方法行中,否则执行可能为空
别名
数据的结构化
设置
3.3.3 删除索引
方式一:使用kibana的management;
方式二:使用restful语法
【10.ES中常用的Field类型】
接下来看如何指定结构化
3.3.4ES中field可以指定的类型
接着指定索引中的结构
先了解ES的文档属性-整型、字符串、时间,这些类型在ES是如何分配的。
官网-学习-文档-other version
Mapping - field datatypes(属性类型)
核心数据类型
- 字符串类型String :
1.text:一般用于全文检索,将当前field进行分词。可用于内容描述等。
2.keyword:当前field不会被分词。可用于关键字。 - 数值类型number:
long
integer:
short
byte
double
float
half_float:精度比float小一半
scaled_float:根据一个long和scaled来表达一个浮点型,long-345,scaled-100 ->3.45 - 时间类型date
date
特点:可以指定具体的输入格式(3种):年月日和毫秒
- 布尔类型
boolean,表达true和false - 二进制类型
binary,暂时支持Base64 encode string - 范围类型range
赋值时,无需指定具体的内容,只需要存储一个范围即可,指定gt,lt,gte,lte。有6个:integer_range,float_range,long_range,double_range,date_range,ip_range
除了核心数据类型,还有其他数据类型,重点看Gao和ip。
- 经纬度类型
geo_point:用来存储经纬度,可用于位置查询 - ip类型
ip:可以存储IPv4或者Ipv6
》to be continue