编程界的小学生
前面介绍了ES的一大堆知识点,什么分布式、什么各种名字的概念,今天就先来感受下,看几个核心API,看看增删改查的语法以及格式。
一、增
1、两种方式
1.1、create
1.1.1、啥意思
创建的时候,如果该document的id已经存在,则创建失败。
1.1.2、语法
PUT index/type/_create/id
{
"key", "value"
}
Elasticsearch7.x开始已经将type的概念移除了,不能自定义,每个index只能是默认的不可修改的名叫_doc的type,所以语法变成了如下:
PUT index/_create/id
{
"key", "value"
}
不能写
PUT index/_doc/_create/id
,否则会报错,必须要省略_doc,原因目前我没去管,因为无伤大雅。
1.1.3、案例
PUT test_index/_create/1
{
"name": "java",
"age": 35,
"hobbies": ["game", "read books"]
}
这时候我们再次执行上面的ES语句,会发现报错了,因为_create发现id存在不会覆盖,而是报错。如下:
1.2、index
1.2.1、啥意思
创建的时候,如果该document的id已经存在,则覆盖老的,相当于先给他删除在重新创建,并且version版本号字段+1。
1.2.2、语法
PUT index/id
{
"key", "value"
}
1.2.3、案例
PUT test_index/1
{
"name": "python",
"age": 22,
"hobbies": ["xxx", "ooo"]
}
为啥是2?因为用的上面_create的那条数据,id=1的document已经存在了,再次执行ES语句的话就是3了。
二、删
1、语法
ELETE index/_doc/id
2、案例
DELETE test_index/_doc/1
删除怎么版本号还+1了?数据没删掉?删掉了的!你在get也查不到,为啥版本号+1?猜也能猜到不是立即删除,只是标记了状态位而已。
如果再次执行下删除语句,则报404了,找不到啦~!
三、改
1、覆盖式修改
1.1、啥意思
就是最上面【增】的index方式,直接全部覆盖。不多bb了。
2、选择性修改
2.1、啥意思
就是想更新哪个字段就更新哪个字段,不想更新的字段也不用写进去,简单方便。
2.2、语法
POST index/_update/id
{
"doc": {
"key", "value"
}
}
2.3、案例
POST test_index/_update/1
{
"doc": {
"name": "go"
}
}
我们通过GET去查的时候name就是新的go了,如下:
四、查
1、语法
# 查全部
GET index/_search
# 查某条
GET index/_doc/id
2、案例
# 查id=1的记录
GET test_index/_doc/1
# 查test_index索引的全部记录
GET test_index/_search
五、批量API
ES当然不是只支持这么几个crud,支持相当复杂的聚合以及批量查询等等各种搜索分析的语法,后面逐步介绍!
六、常见错误码
【微信公众号】