节点:一个运行中的elasticsearch 实例称为一个节点,
一个集群是由一个或多个cluster.name(集群名称)配置的节点组成
查看集群状态:
集群健康:
Get /_集群/health
查询的status 分为三种情况 green,yellow,red
Green:表示主分片和副本都运行正常
Yellow:主分片运行正常,但不是所有的副本都是运行正常的
Red:主分片未正常运行
水平扩容:增加节点副本数量
垂直扩容:购买配置更高的服务,事查询速度更快
文档:实体类对象可以被序列化键值对类型的json对象,一个键对应一个字段或者一个字段的名称。值的类型可以是字符串,数字,布尔值,另一个对象或数组值。
文档的元数据:
_index:文档存放的位置
_type:文档表示对象的数据类别
_id :文档的唯一表示
_version:创建文档后,每次es都会生成一个版本号,每次对文档进行删除和修改,该字段会递增。
Found:true 说明文档已经被找到
_source:文档的数据
获取文档的部分字段:
Get /website/索引/id?_source=title,text
只返回文档的_source字段
Get /website/索引/id/_source
判断整个文档是否存在:
curl -i -XHEAD http://ip:9200/website/索引/id
文档存在则返回200,文档不存在则返回404
Es中的文档不可改变,更新文档需要重新创建索引进行替换
PUT /website/blog/123
{
"title": " my title",
"text": "my text",
"date": "today"
}
替换后:
Version增加,created:false
创建文档方法:(创建生成唯一的索引id)
方法一
Post /websit/索引/
{
“field”:value
}
方法二:
Put /website/索引/指定id?op_type=create
{
“field”:value
}
方法三:
Put /website/索引/指定id/_create
{
“field”:value
}
删除文档:
Delete /website/索引/id
注:删除_version值也会增加
Es采用乐观并发控制:
当对文档进行创建,删除,修改时,新版本的文档必须复制到集群中的其他节点中,在进行创建,删除,修改时文档的版本号自动增加,es 根据这个版本号确保修改以正确的顺序执行,如果旧版本的跟新在新版本到达后到达,则忽略旧版本的更新。
乐观锁:乐观锁认为,在数据修改期间,不会有其他人对数据进行修改,因此不会加锁,但是对数据标记一个版本号,每次对数据进行修改时,更新数据的版本号+1
悲观锁:悲观锁认为,在数据修改期间会有别人对数据进行修改,对数据进行加锁操作,一般在关系型数据库中,当用户对一条数据进行修改时,对这行数据添加一个行锁。
文档的更新:
Post /website/索引/id/_update
{
doc:{
“field”:value
}
}
将一个文档放到一个分片中:
文档存放位置:shard = hash(routing) % number_of_primary_shards
_id 的hash值再除以主分片的数量的余数。因此肯定会存放再0到主分片数量-1之间。因此在创建好文档结构后就最好不要再修改主分片的数量,如果数量修改了,文档存放位置就找不到了。