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的索引了,同时向该索引中添加一条记录,再修改该记录;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入解析 WinForms MVVM 模式中的事件驱动与数据驱动

前言 在传统的 WinForms 开发中,事件驱动模型(Event-Driven Model)是核心,它通过控件的事件(如点击按钮、改变文本等)触发业务逻辑。然而,MVVM 模式引入了数据驱动(Data-Driven&…

Python中的 if __name__ == ‘__main__

在Python中,if __name__ __main__: 这行代码有一个特定的用途和含义。为了理解它,我们需要先了解Python中的__name__变量以及Python脚本是如何执行的。 __name__变量 每个Python模块(python文件)都有一个内置的属性__name__。当…

【系统面试篇】进程与线程类(2)(笔记)——进程调度、中断、异常、用户态、核心态

目录 一、相关面试题 1. 进程的调度算法有哪些? 调度原则 (1)先来先服务调度算法 (2)最短作业优先调度算法 (3)高响应比优先调度算法 (4)时间片轮转调度算法 &am…

大数据工具 flume 的安装配置与使用 (详细版)

参考网址:Flume 1.9用户手册中文版 — 可能是目前翻译最完整的版本了 1,上传安装包 安装包链接:文件下载-奶牛快传 Download |CowTransfer 口令:x8bhcg 1,切换盘符到安装目录 cd /opt/moudles 解压文件…

使用uni-app框架开发各种web前端程序

使用uni-app框架开发各种web前端程序是目前非常流程的开发方式,比如开发APP、小程序、H5等等,是一个使用 vue 开发所有前端应用的框架,开发者编写一套代码,可发布到ios,安卓、H5、以及各种小程序(微信、支付…

鸿蒙ArkTS中的布局容器组件(Column、Row、Flex、 Stack、Grid)

在鸿蒙ArkTS中,布局容器组件有很多,常见的有:   ⑴ Column:(垂直布局容器):用于将子组件垂直排列。   ⑵ Row:(水平布局容器):用于将子组件水…

简单介绍一下mvvm mvc mvp以及区别、历史

MVC(Model - View - Controller) 因MVC架构的灵活性,架构图形式很多,仅供参考 历史: MVC 是最早出现的软件架构模式之一,其历史可以追溯到 20 世纪 70 年代,最初被用于 Smalltalk - 80 环境。…

黑马程序员linux学习【持续更新】

Linux基础 一、Linux简介 1.分类 不同领域的主流操作系统,主要分为下 几类:桌面操作系统、服务器操作系统、移动设备操作系统、嵌入式操作系统。 桌面操作系统 操作系统特点Windows用户数量最多MacOS操作体验好,办公人士首选Linux用户数…

Vert.x,应用监控 - 全链路跟踪,基于Zipkin

关于Zipkin Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),能够收集服务间调用的时序数据,提供调用链路的追踪。Zipkin每一个调用链路通过一个trace id来串联起来,通过trace id,就能够直接定位到这次调…

ENSP作业——园区网

题目 根据上图,可得需求为: 1.配置交换机上的VLAN及IP地址。 2.设置SW1为VLAN 2/3的主根桥,设置SW2为VLAN 20/30的主根桥,且两台交换机互为主备。 3.可以使用super vlan。 4.上层通过静态路由协议完成数据通信过程。 5.AR1作为企…

从壹开始解读Yolov11【源码研读系列】——Data.dataset.py:模型训练数据预处理/YOLO官方数据集类——YOLODataset

【前情回顾】在上一篇文章记录了YOLO源码data目录下的 base.py 文件,其中定义了一个可灵活修改的数据加载处理基类——Class BaseDataset 灵活基类博文地址:https://blog.csdn.net/qq_58718853/article/details/143249295 【实验代码】所有实验代码上传至…

HFSS 3D Layout中Design setting各个选项的解释

从HFSS 3D LAYOUT菜单中,选择Design Settings打开窗口,会有六个选项:DC Extrapolation, Nexxim Options, Export S Parameters, Lossy Dielectrics, HFSS Meshing Method, and HFSS Adaptive Mesh. DC Extrapolation 直流外推 直流外推分为标…

【板栗糖GIS】——如果安装的vscode版本落后了,如何无障碍更新

【板栗糖GIS】——如果安装的vscode版本落后了,如何无障碍更新 今天想安装新扩展插件时发现vscode版本有点旧,于是在不影响插件的情况下更新。 打开vscode软件,点击设置检查更新,如果有需要更新的直接安装到原目录,如…

数字化转型必看!华为数字化最全合集(192页PDF限免下载 )

今天给大家整理了6份关于华为数字化的资料,共计192页,干货满满! 资料已经全部打包,划到文末添加大师兄即可免费下载👇👇👇 一、华为实施数字化转型方法论与实践的业务解读 这份报告是华为实施数…

【数据集】【YOLO】【目标检测】道路结冰数据集 1527 张,YOLO目标检测实战训练教程!

数据集介绍 【数据集】道路结冰数据集 1527 张,目标检测,包含YOLO/VOC格式标注。数据集中包含2种分类:“clear_road, ice_road”。数据集来自国内外图片网站和视频截图,部分数据经过数据增强处理。检测范围监控视角检测、无人机视…

创建线程时传递参数给线程

在C中,可以使用 std::thread 来创建和管理线程,同时可以通过几种方式将参数传递给线程函数。这些方法包括使用值传递、引用传递和指针传递。下面将对这些方法进行详细讲解并给出相应的代码示例。 1. 值传递参数 当你创建线程并希望传递参数时&#xff…

集智书童 | DuoDiff: 提升浅层 Transformer 性能的扩散模型, 双 Backbone 件扩散模型在图像处理中的应用 !

本文来源公众号“集智书童”,仅用于学术分享,侵权删,干货满满。 原文链接:DuoDiff: 提升浅层 Transformer 性能的扩散模型, 双 Backbone 件扩散模型在图像处理中的应用 ! 扩散模型在图像生成方面取得了前所…

linux perf 环境部署和基本测试(基于Ubuntu20.04)

1,linux 安装perf sudo apt-ge install linux-tools-common sudo apt-get install linux-tools-$(uname -r) linux-tools-generic -y 2 补充安装 sudo apt-get install python3-q-text-as-data 3,perf常用命令 larkubuntu:~$ perf usage: perf [--version] [--hel…

PHP露营地管理平台小程序系统源码

⛺️【露营新风尚】露营地管理平台系统全攻略⛺️ 🏕️一、露营热潮下的管理难题:如何高效运营露营地?🤔 随着露营文化的兴起,越来越多的人选择在大自然中享受宁静与自由。然而,露营地的管理却面临着诸多…

信息安全工程师(83)Windows操作系统安全分析与防护

一、Windows操作系统安全分析 系统漏洞: Windows操作系统由于其复杂性和广泛使用,可能存在一些已知或未知的漏洞。这些漏洞可能会被黑客利用,进行恶意攻击。微软会定期发布系统更新和补丁,以修复这些漏洞,提高系统的安…