当前位置: 首页 > article >正文

【Elasticsearch】Elasticsearch文档操作

Elasticsearch文档操作

  • 新增文档
  • 查询文档
  • 删除文档
  • 修改文档
    • 全量修改
    • 局部修改
  • 批处理
  • 总结

有了索引库,接下来就可以向索引库中添加数据了。
Elasticsearch中的数据其实就是JSON风格的文档。操作文档自然保护增、删、改、查等几种常见操作,我们分别来学习。

新增文档

语法:

POST /索引库名/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    "字段3": {
        "子属性1": "值3",
        "子属性2": "值4"
    },
}

示例:

POST /test/_doc/1
{
    "info": "程序员Elasticsearch学习",
    "email": "zy@itcast.cn",
    "name": {
        "firstName": "云",
        "lastName": "赵"
    }
}

在这里插入图片描述

查询文档

根据rest风格,新增是post,查询应该是get,不过查询一般都需要条件,这里我们把文档id带上。
语法:

GET /{索引库名称}/_doc/{id}

示例:

GET /test/_doc/1

在这里插入图片描述

删除文档

删除使用DELETE请求,同样,需要根据id进行删除:
语法:

DELETE /{索引库名}/_doc/id值

示例:

DELETE /test/_doc/1

在这里插入图片描述

修改文档

修改有两种方式:

  • 全量修改:直接覆盖原来的文档
  • 局部修改:修改文档中的部分字段

全量修改

全量修改是覆盖原来的文档,其本质是两步操作:

  • 根据指定的id删除文档
  • 新增一个相同id的文档
    注意:如果根据id删除时,id不存在,第二步的新增也会执行,也就从修改变成了新增操作了。
    语法:
PUT /{索引库名}/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    // ...}

示例:

PUT /test/_doc/1
{
    "info": "程序员Java学习",
    "email": "zy@itcast.cn",
    "name": {
        "firstName": "云",
        "lastName": "赵"
    }
}

在这里插入图片描述
所以如果执行第2次时,得到的反馈则是updated:
由于id为1的文档已经被删除,所以第一次执行时,得到的反馈是created:
在这里插入图片描述

局部修改

局部修改是只修改指定id匹配的文档中的部分字段。
语法:

POST /{索引库名}/_update/文档id
{
    "doc": {
         "字段名": "新的值",
    }
}

示例:

POST /test/_update/1
{
  "doc": {
    "email": "ZhaoYun@itcast.cn"
  }
}

在这里插入图片描述

批处理

批处理采用POST请求,基本语法如下:

POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }

其中:

  • index代表新增操作
    • _index:指定索引库名
    • _id指定要操作的文档id
    • { “field1” : “value1” }:则是要新增的文档内容
  • delete代表删除操作
    • _index:指定索引库名
    • _id指定要操作的文档id
  • update代表更新操作
    • _index:指定索引库名
    • _id指定要操作的文档id
    • { “doc” : {“field2” : “value2”} }:要更新的文档字段

示例,批量新增:

POST /_bulk
{"index": {"_index":"test", "_id": "3"}}
{"info": "程序员C++", "email": "ww@itcast.cn", "name":{"firstName": "五", "lastName":"王"}}
{"index": {"_index":"test", "_id": "4"}}
{"info": "程序员前端", "email": "zhangsan@itcast.cn", "name":{"firstName": "三", "lastName":"张"}}

批量删除:

POST /_bulk
{"delete":{"_index":"test", "_id": "3"}}
{"delete":{"_index":"test", "_id": "4"}}

总结

文档操作有哪些?

  • 创建文档:POST /{索引库名}/_doc/文档id { json文档 }
  • 查询文档:GET /{索引库名}/_doc/文档id
  • 删除文档:DELETE /{索引库名}/_doc/文档id
  • 修改文档:
    • 全量修改:PUT /{索引库名}/_doc/文档id { json文档 }
    • 局部修改:POST /{索引库名}/_update/文档id { "doc": {字段}}

http://www.kler.cn/a/513152.html

相关文章:

  • Golang的文件处理优化策略
  • iOS中的设计模式(三)- 工厂方法
  • 知识图谱中的word2vec 技术是做什么的?
  • 微服务学习:基础理论
  • CSS 合法颜色值
  • windows蓝牙驱动开发-蓝牙设备栈
  • IoTDB 1.2 升级 1.3 后 Pipe 插件失效
  • vif-方差膨胀因子计算
  • macOS如何进入 Application Support 目录(cd: string not in pwd: Application)
  • QD Laser携“Lantana”激光器参展SPIE光子学西部展2025,聚焦紧凑型设计
  • 日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件
  • (二叉树)
  • HarmonyOS Next 最强AI智能辅助编程工具 CodeGenie介绍
  • OpenSeaOtter使用手册-变更通知和持续部署
  • C#高级:用控制台程序模拟WebAPI处理接口请求信息
  • 无人设备航电系统的构成
  • 【gopher的java学习笔记】Java中Service与Mapper的关系详解
  • 深度学习-90-大型语言模型LLM之基于LM Studio本地化部署运行自己的大模型
  • 京华春梦,守岁这方烟火人间
  • 使用ssh推送项目到github
  • Java中如何安全地停止线程?
  • C++入门 详细版
  • Linux - 线程池
  • SpringBoot实现轻量级动态定时任务管控及组件化
  • git原远程仓库无法连接后使用本地仓库将所有分支和tags上传到新远程仓库
  • [答疑]这个消息名是写发送数据还是接收数据