节点:一个运行中的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之间。因此在创建好文档结构后就最好不要再修改主分片的数量,如果数量修改了,文档存放位置就找不到了。