首页 > 其他分享 >Elasticsearch之数据的增删查改(CURD)

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

时间:2024-04-09 11:44:05浏览次数:27  
标签:test1 name tags doc CURD 查改 Elasticsearch desc

目录

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

一、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治!怎么治?上车,咱们继续往下走!

二、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

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

三、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表示查询数据不存在。

四、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" : [
      "很黄",
      "很长",
      "很直"
    ]
  }
}

标签:test1,name,tags,doc,CURD,查改,Elasticsearch,desc
From: https://www.cnblogs.com/Mcoming/p/18123620

相关文章

  • Elasticsearch 配置内置分析器(3)
    一.内置分析器(analyzer)内置分析器无需任何配置即可直接使用,也支持配置选项来更改其行为。下面示例,分别使用了自定义分析器与内置分析器PUTmy-index-000001{"settings":{"analysis":{"analyzer":{"std_english":{#自定义分析......
  • Elasticsearch 悬挂索引分析和自己的一点见解
    在Elasticsearch的实战中,悬挂索引是一个既常见又容易引起困扰的概念。今天,我将分享一次处理集群状态为RED,原因为DANGLING_INDEX_IMPORTED 的实战经验,深入探讨悬挂索引的定义、产生原因、管理方法,以及如何有效处理它们,确保读者能够明白并解决自己面临的问题。值得一提的是,......
  • linux 环境下 elasticsearch 及 python 相关库的使用
    -elasticsearch是什么?elasticsearch简称es,是一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能。-安装1、下载官网下载地址2、解压tarzxvfelasticsearch-8.13.0-linux-x86_64.tar.gz-C/usr/local/3、解决JDK依赖问题新版本的es压缩......
  • 实现顺序表的增删查改
    首先什么是顺序表呢?顺序表的底层结构是数组,对数组的封装,实现了常用的增删改查等接口。顺序表分为静态顺序表和动态顺序表~静态顺序表就是使用定长数组存储元素,这里有一个很大的缺陷,那就是空间给少了不够用,给多了造成空间浪费。所以。这里我们就来使用动态顺序表来实现增......
  • elasticsearch-head的安装和使用
    一、elasticsearch-head插件介绍elasticsearch-head是elasticsearch的一款可视化工具,依赖于node.js,所以需要先安装node.js二、安装Node.js详情见文章nodejs安装和使用三、安装Grunt这一步可不做#Grunt是基于Node.js的项目构建工具。grunt作为一个前端构建工具,有资源......
  • Elasticsearch 配置与测试分析器 (2)
    一.配置文本分析器(Configuretextanalysis) 默认情况下,Elasticsearch使用standard分析器来进行文本分析,如果使用该分析器,则不用额外的配置。如果不满足,可以使用其它内置分析器,也可以创建自定义的分析器更好的控制,通常在生产实战中都是自定义分析器,方便更好扩展。 ......
  • Elasticsearch,使用scroll实现遍历(分页)查询
    为什么要使用scroll查询在使用es中,当某个index存贮的数据超过10000时,只能查询到10000的数据。因为index.max_result_window默认值是10000。并且使用游标查询可以在一次查询中获取大量文档,并且保持查询快照状态,允许用户多次检索数据而不影响其他并发请求。scroll查......
  • 记一次在使用Asp.Net Core 8.0 中使用Entity Framework Core的Api控制器生成Rest Api
    问题描述:把实体模型建好了,数据上下文也建好了,数据库连接字符串也在appsetting.json中配置好了,服务也注入了,然后不想一个一个的写控制器的方法,想用Api控制器生成现成的CURD方法,结果一连串的报错,在网上和GitHub也看了各位的解决办法,但都是以失望的报错,现在将解决问题的方法如下。1......
  • elasticsearch mapping
    1 概念:​ ES中的mapping有点类似与RDB中“表结构”的概念,在MySQL中,表结构里包含了字段名称,字段的类型还有索引信息等。在Mapping里也包含了一些属性,比如字段名称、类型、字段使用的分词器、是否评分、是否创建索引等属性,并且在ES中一个字段可以有对个类型。分词器、评分等概念在......
  • Elasticsearch 认识分词(1)
    一.概述分词是构建倒排索引的重要一环。根据语言不同可以分为英文分词、中文分词等;根据分词实现的不同又分为标准分词器、空格分词器、停用词分词器等。在传统的分词器不能解决特定业务场景的问题时,往往需要自定义分词器。1.1认识分词对于分词操作来说,英语单词......