Elasticsearch之数据的增删查改(CURD)

1|0Elasticsearch之数据的增删查改(CURD)

1|1一、CURD之Create(增)

  • 注意:当执行PUT命令时,如果数据不存在,则新增该条数据,如果数据存在则修改该条数据(这种修改相当于删除之前的全部属性,只保留当前指定的属性)。
PUT test1/_doc/1 { "name":"顾老二", "age":30, "from": "gu", "desc": "皮肤黑、武器长、性格直", "tags": ["黑", "长", "直"] }
  • 他明处貌似还有俩老婆:
PUT test1/_doc/2 { "name":"大娘子", "age":18, "from":"sheng", "desc":"肤白貌美,娇憨可爱", "tags":["白", "富","美"] } PUT test1/_doc/3 { "name":"龙套偏房", "age":22, "from":"gu", "desc":"mmp,没怎么看,不知道怎么形容", "tags":["造数据", "真","难"] }
  • 家里红旗不倒,家外彩旗飘摇:
PUT test1/_doc/4 { "name":"石头", "age":29, "from":"gu", "desc":"粗中有细,狐假虎威", "tags":["粗", "大","猛"] } PUT test1/_doc/5 { "name":"魏行首", "age":25, "from":"广云台", "desc":"仿佛兮若轻云之蔽月,飘飘兮若流风之回雪,mmp,最后竟然没有嫁给顾老二!", "tags":["闭月","羞花"] }
  • 创建完成后通过GET命令查询一下:
GET test1/_doc/1

结果如下:

{ "_index" : "test1", "_type" : "doc", "_id" : "1", "_version" : 1, "found" : true, "_source" : { "name" : "顾老二", "age" : 30, "from" : "gu", "desc" : "皮肤黑、武器长、性格直", "tags" : [ "黑", "长", "直" ] } }
  • 查询也没啥问题,但是你可能说了,人家老二是黄种人,怎么是黑的呢?好吧咱改改desctags
PUT test1/_doc/1 { "desc":"皮肤很黄,武器很长,性格很直", "tags":["很黄","很长", "很直"] }
  • 上例,我们仅修改了desctags两处,而nameagefrom三个属性没有变化,我们可以忽略不写吗?查查看:
GET test1/_doc/1
  • 结果如下:
{ "_index" : "test1", "_type" : "doc", "_id" : "1", "_version" : 3, "found" : true, "_source" : { "desc" : "皮肤很黄,武器很长,性格很直", "tags" : [ "很黄", "很长", "很直" ] } }
  • 哎呀,出事故了!修改是修改了,但结果不太理想啊,因为nameagefrom属性都没啦!

  • 注意:PUT命令,在做修改操作时,未指定的其他属性,会被当作空来处理,会删除该属性,指定的属性则按照指定的值进行修改操作。也就是如上例所示的那样,我们修改时只修改了desctags两个属性,其他的属性并没有一起添加进去。

  • 很明显,这是病!dai治!怎么治?上车,咱们继续往下走!

1|2二、CURD之Update(改)

  • 让我们首先恢复一下事故现场:
PUT test1/_doc/1 { "name":"顾老二", "age":30, "from": "gu", "desc": "皮肤黑、武器长、性格直", "tags": ["黑", "长", "直"] }
  • 我们要将黑修改成黄:
POST test1/_doc/1/_update { "doc": { "desc": "皮肤很黄,武器很长,性格很直", "tags": ["很黄","很长", "很直"] } }
  • 上例中,我们使用POST命令,在id后面跟_update,要修改的内容放到doc文档(属性)中即可。

  • 我们再来查询一次:

GET test1/_doc/1

结果如下:

{ "_index" : "test1", "_type" : "doc", "_id" : "1", "_version" : 5, "found" : true, "_source" : { "name" : "顾老二", "age" : 30, "from" : "gu", "desc" : "皮肤很黄,武器很长,性格很直", "tags" : [ "很黄", "很长", "很直" ] } }
  • 结果如上例所示,现在其他的属性没有变化,只有desctags属性被修改。

  • 注意:POST命令,这里可用来执行修改操作(还有其他的功能),POST命令配合_update完成修改操作,指定修改的内容放到doc

  • 写了这么多,我也发现我上面对顾老二有讲的不对的地方:石头不是跟顾老二不清不楚,石头是跟小桃不清不楚!好吧,刚才那个数据是一个错误示范!我们这就把它干掉!

1|3三、CURD之Delete(删)

DELETE test1/_doc/4
  • 很简单,通过DELETE命令,就可以删除掉那个错误示范了!

  • 删除效果如下:

{ "_index" : "test1", "_type" : "doc", "_id" : "4", "_version" : 4, "result" : "deleted", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 4, "_primary_term" : 1 }
  • 我们再来查询一遍:
GET test1/_doc/4
  • 结果如下:
{ "_index" : "test1", "_type" : "doc", "_id" : "4", "found" : false }
  • 上例中,"found" : false表示查询数据不存在。

1|4四、CURD之Retrieve(查)

  • 我们上面已经不知不觉的使用熟悉这种简单查询方式,通过 GET命令查询指定文档:
GET test1/_doc/1

结果如下:

{ "_index" : "test1", "_type" : "doc", "_id" : "1", "_version" : 5, "found" : true, "_source" : { "name" : "顾老二", "age" : 30, "from" : "gu", "desc" : "皮肤很黄,武器很长,性格很直", "tags" : [ "很黄", "很长", "很直" ] } }

__EOF__

本文作者BigSun丶
本文链接https://www.cnblogs.com/Mcoming/p/18123620.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   BigSun丶  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示