es学习笔记(二)
RESTFUL
RESTful是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。elasticsearch里的接口都是通过rest接口实现的,我们可以通过HTTP的GET,POST,PUT,DELETE,PATCH对数据进行CRUD。
安全性:指方法的调用不会产生副作用,即不会修改资源的状态,但是多次调用返回的值可能不一样(被其他方法修改过)
幂等性:指方法多次调用返回的效果一致,客户端可以重复调用并且期望同样的结果。比如修改某个值,一次调用多次调用效果一致,都是修改。
GET:具有安全性和幂等性,用于获取资源
POST:不具有安全性和幂等性,用于创建子资源,在方法修改资源时,URL指示的是该资源的父级资源,待修改资源的ID信息在请求体中携带。重复提交请求可能产生两个不同的资源
PUT:不具有安全性,具有幂等性,用于创建和更新资源,在修改资源时URL直接指示待修改的资源。重复提交只会创建一个资源
DELETE:不具有安全性,具有幂等性,用于删除资源
PATCH:不具有安全性,具有幂等性,用于创建,更新资源,与PUT类似,区别在于PATCH代表部分更新,仅对非null进行更新
创建索引及文档
创建一个名为gaoxiaolin_test的索引,名为person的类型并插入文档,文档id设置为1。(在es4.0之后一个索引只能有一个type)类比MYSQL就是创建了一个名为gaoxiaolin_test的数据库,创建一个名为person的表,再在person表中插入一条数据,数据id为1
如图可见创建成功,有两个分片,一个是主分片另一个是复制分片。这是自动创建索引,也可以禁止自动创建,深入学习时再看。通常使用以上方法写入文档之后,并不能马上进行搜索,需要es提供的refresh操作,它可以使更改可见以进行搜索操作,通常会有一个refresh timer来定时完成这操作(后面总结)。
返回结果中的_version表示版本信息,当前第一次创建_id为1的文档,因此它显示为1,之后如果我们更改这个文档,他的版本每次都会自动加1。如下图
可以看出,如果文档已经存在,每次post或put对时那么相应的版本号就会自动加1,之前的版本会被抛弃,如果我们不想要这样,而是在文档已存在时向我们提示信息,那么可以在请求时带上op_type=create。若文档已存在,将会出现错误提示信息。op_type可取值有两个index和create
在上面创建文档过程中,我们为文档指定了一个id1,若我们指定,那么es会为我们自动创建一个新的文档,这样速度更快,以上的方法可以使用POST和PUT,但是通常我们在创建一个新的文档时使用POST,修改一个新的文档时使用PUT,在es为我们自动创建id的情况下,只能使用POST方法。如图所示,es为我们自动生成了id。
查看文档
文档查看可以显示全部信息
可以只查看_source中的内容
查看所有文档
修改文档
通常使用put并且指定文档id进行操作,但是使用这个方法,我们每次修改文档必须把文档的每一项都写出来,未写的部分将丢失
检查文档是否存在
Head gaoxiaolin_test/person/1
删除文档
DELETE gaoxiaolin_test/person/1
删除index
DELETE gaoxiaolin_test
查询文档条数命令_count
get gaoxiaolin_test/_count