ES文档:文档操作_doc(7.9.2)

用心记录技术,走心分享,始于后端,不止于后端,励志成为一名优秀的全栈架构师,真正的实现码中致富。

ElasticSearch文档的操作;

添加文档

新建一个索引 goboy-blog,如果添加文档索引不存在则会创建一个索引。

PUT goboy-blog/_doc/1
{"title":"我的第一个文档","data":"2023-11-2","content":"用心记录技术,走心分享,始于后端,不止于后端,励志成为一名优秀的全栈架构师,真正的实现码中致富。"
}

请在此添加图片描述

Elasticsearch文档索引的响应示例,包含了以下关键信息:

"_index": 这是文档所属的索引的名称,这里是"goboy-blog"。
"_type": 在Elasticsearch 7.x版本之后,通常为"_doc",表示默认文档类型。
"_id": 这是文档的唯一标识符,用于在索引中唯一标识文档。在这里,文档的ID是"1"。
"_version": 这是文档的版本号,表示文档的版本。在这里,文档的版本号是1。
"result": 这是文档索引操作的结果,这里是"created",表示文档已经成功创建。
"_shards": 这是关于文档索引操作的分片信息。
"total": 这是总分片数量,这里是2。
"successful": 这是成功索引的分片数量,这里是1。这表示在2个分片中的1个成功索引。
"failed": 这是失败的分片数量,这里是0。表示没有分片索引操作失败。
"_seq_no": 这是文档的序列号,用于跟踪文档的变化。
"_primary_term": 这是文档所在的主分片的主要期(primary term)。

这个响应表明文档成功地被索引到了"goboy-blog"索引中,索引操作是成功的,只有一个分片成功地完成了索引操作。索引操作通常用于将文档添加到Elasticsearch索引中,以便后续搜索和检索。

知识点!!!

  • 使用PUT请求添加文档时必须携带文档id,否则会出错
  • 使用POST请求添加文档可以不携带文档id,会自动创建一个文档id
POST goboy-blog/_doc
{"title":"我的第二个文档","data":"2023-11-2","content":"用心记录技术,走心分享,始于后端,不止于后端,励志成为一名优秀的全栈架构师,真正的实现码中致富。"
}

请在此添加图片描述

查找文档

GET goboy-blog/_doc/2
  • 获取编号(ID)为2的文档:

请在此添加图片描述

Elasticsearch文档检索的响应示例,包含了以下关键信息:

"_index": 这是文档所属的索引的名称,这里是"goboy-blog"。
"_type": 在Elasticsearch 7.x版本之后,通常为"_doc",表示默认文档类型。
"_id": 这是文档的唯一标识符,用于在索引中唯一标识文档。在这里,文档的ID是"2"。
"found": 这是一个布尔值,表示是否找到了文档。在这里,值为false,表示未找到ID为"2"的文档。

这个响应表明尝试检索ID为"2"的文档,但未找到该文档,因此found字段的值为false。文档检索操作通常用于从索引中检索文档,如果文档存在,则会返回文档的详细信息,如果文档不存在,则会返回found字段为false

GET goboy-blog/_doc/1

请在此添加图片描述

查看索引中所有文档内容

GET goboy-blog/_search

请在此添加图片描述

判断文档是否存在

根据id判断指定文档是否存在

Head goboy-blog/_doc/1

请在此添加图片描述

Head goboy-blog/_doc/2

请在此添加图片描述

批量获取文档

  • 获取goboy-blog索引中编号为1和2的文档
GET goboy-blog/_mget
{"ids":["1","2"]
}

请在此添加图片描述

这里直接用POST请求批量查询比较好的。

POST goboy-blog/_mget
{"ids":["1","2"]
}

文档更新

普通更新(根据id)

PUT goboy-blog/_doc/1
{"title":"更新我的第一个文档"
}

文档更新一次,_version 就会加1;

更新某个字段的值会覆盖整个文档:

请在此添加图片描述

 GET goboy-blog/_doc/1

通过查询发现,字段已经被覆盖

请在此添加图片描述

大多数时候我们只需要更新某一个字段的值,所以我们采取以下方式:

请求格式: POST {index}/_update/{id}

POST goboy-blog/_update/1
{"script": {"lang": "painless","source": "ctx._source.title=params.title","params": {"title":"更新我的第一个文档"}}
}

请在此添加图片描述

查看

请在此添加图片描述

Elasticsearch的更新请求,它试图更新索引中的文档。让我来解释这个请求的各个部分:

POST goboy-blog/_update/2: 这是HTTP请求,用于更新索引中的文档。以下是各个部分的解释:
goboy-blog: 这是索引的名称,表示要对"goboy-blog"索引进行操作。
_update: 这是Elasticsearch的更新操作,用于部分更新文档。
2: 这是文档的唯一标识符(ID),表示要更新的文档的ID。在这里,文档的ID是"2"。
"script": 这是更新文档时使用的脚本。
"lang": 这是脚本语言,这里是"Painless",一种用于Elasticsearch的脚本语言。
"source": 这是脚本的源代码,指定了要执行的脚本逻辑。脚本的作用是将文档中的"title"字段更新为"我是一个标题"。
"params": 这是脚本参数,允许将参数传递给脚本。在这里,参数"title"被设置为"我是一个标题"。

这个请求的目的是将ID为"2"的文档中的"title"字段更新为"我是一个标题"。更新请求中的脚本部分使用Painless脚本语言来执行更新操作。请注意,这是一个示例请求,实际应用中需要根据具体需求和文档结构来编写更新请求。

添加字段

  • 增加一个文档的字段tags并为其赋值
  • 增加tags标签并为其赋值 java,js
PUT goboy-blog/_doc/2
{"title":"我的第二个文档","data":"2023-11-2","content":"用心记录技术,走心分享,始于后端,不止于后端,励志成为一名优秀的全栈架构师,真正的实现码中致富。"
}

请在此添加图片描述

POST goboy-blog/_update/2
{"script": {"lang": "painless","source": "ctx._source.tags=[\"java\",\"js\"]"}
}

请在此添加图片描述

  • 获取文档内容:

请在此添加图片描述

  • 使用add方法为tags标签添加一个元素css
POST goboy-blog/_update/2
{"script": {"lang": "painless","source": "ctx._source.tags.add(\"css\")"}
}

请在此添加图片描述

  • 再次获取文档内容:

请在此添加图片描述

  • 也可以使用一些复杂的 if-else逻辑
  • 如果文档中的tags标签包含css内容,则删除此文档,否则什么都不做

POST goboy-blog/_update/2
{"script": {"lang": "painless","source": "if(ctx._source.tags.contains(\"css\")){ctx.op=\"delete\"}else{ctx.op=\"none\"}"}
}

请在此添加图片描述

  • 查询

请在此添加图片描述

查询更新

  • 当前数据

请在此添加图片描述

通过条件查询找到文档,然后进行更新

例如:将title包含“更新”的文档的content修改为“非常非常的走心”。

  • 文档内容:
POST goboy-blog/_update_by_query
{"script": {"source": "ctx._source.content=\"非常非常的走心\"","lang": "painless"},"query": {"term": {"title": "666"}}
}
  • 更新结果:

请在此添加图片描述

请在此添加图片描述

Elasticsearch批量操作的响应示例,包含了有关操作执行的各种统计信息和指标。以下是响应中各个字段的解释:

"took": 表示操作花费的时间,这里是6毫秒。
"timed_out": 是一个布尔值,表示操作是否超时,这里是false,表示操作未超时。
"total": 表示操作涉及的文档总数,这里是1,表示有1个文档被操作。
"updated": 表示已经更新的文档数量,这里是1,表示1个文档被更新。
"deleted": 表示已经删除的文档数量,这里是0,表示没有文档被删除。
"batches": 表示操作执行的批次数量,这里是1,表示有1个批次的操作。
"version_conflicts": 表示发生版本冲突的文档数量,这里是0,表示没有版本冲突。
"noops": 表示没有实际操作的文档数量,这里是0,表示所有操作都是有效的。
"retries": 包含了重试操作的信息,分为bulk(批量操作)和search(搜索操作)两种类型,这里都是0,表示没有重试操作。
"throttled_millis": 表示操作由于限流而被暂停的时间,这里是0毫秒,表示没有限流暂停。
"requests_per_second": 表示每秒执行的操作请求数,这里是-1.0,表示没有限制。
"throttled_until_millis": 表示限流操作将持续暂停的时间,这里是0毫秒,表示没有限流。
"failures": 包含了有关操作中发生的错误的详细信息,这里是一个空数组,表示没有错误。

这个响应表明执行的操作更新了1个文档,操作总数为1,没有发生错误或冲突。通常,这种情况表示操作成功,并且已经更新了指定文档。

删除文档

根据id删除

语法:DELETE {index}/_doc/{id}

删除一个id为 VF9xiosBWWxO5_dDHEpm 的文档

DELETE goboy-blog/_doc/VF9xiosBWWxO5_dDHEpm

请在此添加图片描述

如果在添加文档时指定了路由,则删除文档时也需要指定路由,否则删除失败。

查询删除

查询删除是 POST 请求。

语法:POST {index}/_delete_by_query

例如:删除 title 中包含 666 的文档:

POST goboy-blog/_delete_by_query
{"query":{"term":{"title":"666"}}
}

请在此添加图片描述

请在此添加图片描述

删除某一个索引下的所有文档:

POST goboy-blog/_delete_by_query
{"query":{"match_all":{}}
}

请在此添加图片描述

  • 查询

请在此添加图片描述

批量操作

通过 API 可以执行批量索引、批量删除、批量更新等操作。

搞一个名为 goboy.json 的文件,内容如下:

{"index":{"_index":"goboy","_id":"123"}}
{"name":"Javaboy"}
{"update":{"_index":"goboy","_id":"123"}}
{"doc":{"name":"C++boy"}}

第一行:index 表示要执行一个索引操作(这个表示一个 action,其他的 action 还有 create,delete,update)。

  • _index 定义了索引名称,这里表示要创建一个名为 goboy的索引;
  • _id 表示新建文档的 id 为 123;

第二行是第一行操作的参数。

第三行的 update 则表示要更新。

第四行是第三行的参数。

注意!!!,结尾要空出一行。

goboy.json 文件创建成功后,放到服务器的某个目录下,执行请求命令,如下:

curl -XPOST "http://localhost:9200/goboy/_bulk" -H "content-type:application/json" --data-binary @/opt/goboy.json

执行完成后,就会创建一个名为 goboy的索引了,同时向该索引中添加一条记录,再修改该记录;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/466691.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人保财险(外包)面试分享

前言: 这是本月面的第三家公司,太难了兄弟们,外包都不好找了,临近年底,金九银十已经错过了,金三银四虽然存在,但按照这几年的行情,金九银十和金三银四其实已经是不复存在了&#xf…

机器视觉基础—双目相机

机器视觉基础—双目相机与立体视觉 双目相机概念与测量原理 我们多视几何的基础就在于是需要不同的相机拍摄的同一个物体的视场是由重合的区域的。通过下面的这种几何模型的目的是要得到估计物体的长度,或者说是离这个相机的距离。(深度信息&#xff09…

C++ | Leetcode C++题解之第542题01矩阵

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) {int m matrix.size(), n matrix[0].size();// 初始化动态规划的数组&#xff0c;所有的距离值都设置为一个很大的…

分布式——BASE理论

简单来说&#xff1a; BASE&#xff08;Basically Available、Soft state、Eventual consistency&#xff09;是基于CAP理论逐步演化而来的&#xff0c;核心思想是即便不能达到强一致性&#xff08;Strong consistency&#xff09;&#xff0c;也可以根据应用特点采用适当的方…

安卓智能指针sp、wp、RefBase浅析

目录 前言一、RefBase1.1 引用计数机制1.2 设计目的1.3 主要方法1.4 如何使用1.5 小结 二、sp和wp2.1 引用计数机制2.2 设计目的2.3 主要方法2.3.1 sp2.3.2 wp 2.4 如何使用2.5 小结 四、参考链接 前言 安卓底层binder中&#xff0c;为什么 IInterface要继承自RefBase &#x…

k8s 上如何跑 Dolphins 模型

接着上一篇的介绍&#xff0c;这一篇就来跑跑 Dolphins 模型&#xff0c;本篇会记录&#xff0c;跑模型常见的阬点。 1 在 k8s 上创建 pod 将外部数据挂载在 pod 里&#xff0c;并申请 gpu 资源。同时修改代码里对应的引入数据的路径 # dolphins.yaml apiVersion: v1 kind: …

CentOS 7 更换软件仓库

CentOS 7 于2024年6月30日停止维护&#xff0c;官方仓库已经没有软件了&#xff0c;想要继续使用 &#xff0c;需要更换软件仓库&#xff0c;这里更换到阿里云的软件仓库 https://developer.aliyun.com/mirror/ 查看目前可用的软件数量 yum repolist 更换软件仓库&#xff1a…

初学者指南:用例图——开启您的软件工程之旅

目录 背景&#xff1a; 基本组成&#xff1a; 关联&#xff08;Assciation&#xff09;&#xff1a; 包含&#xff08;Include&#xff09;&#xff1a; 扩展&#xff08;Extend&#xff09;&#xff1a; 泛化&#xff08;Inheritance&#xff09;&#xff1a; 完整银行…

单位正交矢量的参数化,用于特征矢量对厄尔米特矩阵对角化使用

​ 首先α β 在0-pi/2内&#xff0c;这样就可以取值0-1&#xff0c;满足了单位化的要求 每个向量的模由α和β定义&#xff0c;αβ定义模的时候只限制在0–pi/2&#xff0c;由画图可知不可正交 为了验证矩阵 U 3 \boldsymbol{U}_3 U3​ 的第一列和第二列是否正交&#xff…

Spring Security 框架篇-深入了解 Spring Security 的授权核心功能(RBAC 权限模型、自定义异常处理器、校验权限方法)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 权限系统 1.1 引入 1.2 RBAC 权限模型 1.3 数据库设计 2.0 Spring Security 核心功能-授权 2.1 思路分析 2.2 编写 SQL 语句 2.3 将用户权限进行封装 2.4 获取用户…

使用 API 和离线库查询 IP 地址方法详解

目录 一、IP 地址查询能获取哪些信息1.地理位置信息2.网络信息3.网络类型 二、IP 地址查询方法&#xff0c;附代码1.在线查询 IP 地址方法2.使用 API 进行 IP 地址查询3.使用离线库进行 IP 地址查询 互联网监管部门要求公开 IP 归属地&#xff0c;引起了很大热度&#xff0c;但…

微服务day02

教学文档&#xff1a; 黑马教学文档 Docker Docker的安装 镜像和容器 命令解读 常见命令 案例 查看DockerHub&#xff0c;拉取Nginx镜像&#xff0c;创建并运行容器 搜索Nginx镜像&#xff1a;在 www.hub.docker.com 网站进行查询 拉取镜像&#xff1a; docker pull ngin…

一个小程序如何对接多个收款账户?

背景 我又来了&#xff0c;之前对接过网约巴士系统 网约巴士旅游专线平台搭建历程&#xff0c;运营了两年多了。在运营中完善、在完善中学习&#xff0c;一直是不变的真理。有一句话说得好&#xff1a;先做一个垃圾、用起来再说。 今天又需要升级了&#xff0c;需求是&#…

基于航片的玉米异常情况识别赛题正在报名中 | CCF BDCI进行时

一年一度的行业盛事2024 CCF大数据与计算智能大赛&#xff08;简称2024 CCF BDCI&#xff09;又在激烈进行中啦 多个赛题等你挑战&#xff0c;还没有报名的伙伴们抓紧时间咯&#xff0c;叫上你伙伴练起来吧&#xff01; 2024 CCF大数据与计算智能大赛 CCF大数据与计算智能大…

面试题:Spring(一)

1. Spring框架中bean是单例么&#xff1f; Service Scope("singleton") public class UserServiceImpl implements UserService { }singleton : bean在每个Spring IOC容器中只有一个实例。prototype&#xff1a;一个bean的定义可以有多个实例。 2. Spring框架中的…

Android View事件分发

目录 1.什么是View事件分发&#xff1f; 2.事件的类型 3.事件的发生 4.事件分发的方法 4.1 dispatchTouchEvent() 4.2 onTouchEvent() 4.3 onInterceptTouchEvent() 5.滑动冲突 5.1 外部拦截法 5.2内部拦截法 6.onTouch的执行高于onClick 7. onTouch()和onTouchEve…

uniapp 实现瀑布流

效果演示 组件下载 瀑布流布局-waterfall - DCloud 插件市场

6.qsqlquerymodel源码分析

目录 继承关系入口浅析qsqlquery刷新数据 扩展列或者移除列以及取别名读取数据与增减行读取数据 下一章节&#xff1a;如何使用qsqlquerymodel 与 qtableview实现自定义表格 继承关系 qsqlquerymodel 继承与qabstracttablemodel 入口 负责填充数据 void QSqlQueryModel::s…

Vue3中使用LogicFlow实现简单流程图

实现结果 实现功能&#xff1a; 拖拽创建节点自定义节点/边自定义快捷键人员选择弹窗右侧动态配置组件配置项获取/回显必填项验证历史记录&#xff08;撤销/恢复&#xff09; 自定义节点与拖拽创建节点 拖拽节点面板node-panel.vue <template><div class"node-…

Devops业务价值流:软件研发最佳实践

在当今快速迭代的软件开发环境中&#xff0c;DevOps业务价值流已成为推动软件研发高效与质量并重的关键实践。软件研发阶段作为产品生命周期的核心环节&#xff0c;其每一步都承载着将创意转化为现实的重要使命。在历经需求澄清的精准定位、架构设计的宏观规划以及项目初始化的…