ES的文档操作

news2025/2/26 20:38:32

一,DSL语句

1,新增文档:

2,查询文档和删除文档:

,3修改文档

修改有两种方式:

  • 全量修改:直接覆盖原来的文档

  • 增量修改:修改文档中的部分字段

全量修改

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

  • 根据指定的id删除文档

  • 新增一个相同id的文档

注意:如果根据id删除时,id不存在,第二步的新增也会执行,也就从修改变成了新增操作了。

语法:

PUT /{索引库名}/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    // ... 略
}

示例:

PUT /heima/_doc/1
{
    "info": "黑马程序员高级Java讲师",
    "email": "zy@itcast.cn",
    "name": {
        "firstName": "云",
        "lastName": "赵"
    }
}

增量修改

增量修改是只修改指定id匹配的文档中的部分字段。

语法:

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

示例:

 

二,Java代码

创建文档:

 //创建文档
    @Test
    void testAddDocument() throws IOException {
        //1,根据id查询出数据库酒店数据
        Hotel hotel = hotelService.getById(61083L);
        //2,转换为文档类型
        HotelDoc hotelDoc = new HotelDoc(hotel);
        //3,将HotelDoc转Json
        String json = JSON.toJSONString(hotelDoc);

        //1,准备Request对象
        IndexRequest request = new IndexRequest("hotel").id(hotelDoc.getId().toString());
        //2,准备Json文档
        request.source(json,XContentType.JSON);
        //3,发送请求
        client.index(request,RequestOptions.DEFAULT);
    }

查询文档;

 //查询文档
    @Test
    void testGetDocumentById() throws IOException {
        // 1.准备Request
        GetRequest request = new GetRequest("hotel", "61083");
        // 2.发送请求,得到响应
        GetResponse response = client.get(request, RequestOptions.DEFAULT);
        // 3.解析响应结果
        String json = response.getSourceAsString();

        HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
        System.out.println(hotelDoc);
    }

更新文档;

//更新文档
    @Test
    void testUpdateDocument() throws IOException {
        // 1.准备Request
        UpdateRequest request = new UpdateRequest("hotel", "61083");
        // 2.准备请求参数
        request.doc(
                "price", "952",
                "starName", "四钻"
        );
        // 3.发送请求
        client.update(request, RequestOptions.DEFAULT);
    }

删除文档;

 //删除文档
    @Test
    void testDeleteDocument() throws IOException {
        //1,准备Request
        DeleteRequest request = new DeleteRequest("hotel", "61083");
        //3,发送请求
        client.delete(request,RequestOptions.DEFAULT);
    }

批量添加文档;

批量处理BulkRequest,其本质就是将多个普通的CRUD请求组合在一起发送。

其中提供了一个add方法,用来添加其他请求:

可以看到,能添加的请求包括:

  • IndexRequest,也就是新增

  • UpdateRequest,也就是修改

  • DeleteRequest,也就是删除

因此Bulk中添加了多个IndexRequest,就是批量新增功能了。示例:

//批量创建文档
    @Test
    void testBulkRequest() throws IOException {
        // 批量查询酒店数据
        List<Hotel> hotels = hotelService.list();

        // 1.创建Request
        BulkRequest request = new BulkRequest();
        // 2.准备参数,添加多个新增的Request
        for (Hotel hotel : hotels) {
            // 2.1.转换为文档类型HotelDoc
            HotelDoc hotelDoc = new HotelDoc(hotel);
            // 2.2.创建新增文档的Request对象
            request.add(new IndexRequest("hotel")
                    .id(hotelDoc.getId().toString())
                    .source(JSON.toJSONString(hotelDoc), XContentType.JSON));
        }
        // 3.发送请求
        client.bulk(request, RequestOptions.DEFAULT);
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于PyQT的图片批处理系统

项目背景&#xff1a; 随着数字摄影技术的普及&#xff0c;人们拍摄和处理大量图片的需求也越来越高。为了提高效率&#xff0c;开发一个基于 PyQt 的图片批处理系统是很有意义的。该系统可以提供一系列图像增强、滤波、水印、翻转、放大缩小、旋转等功能&#xff0c;使用户能够…

thinkphp学习09-数据库的数据新增

单数据新增 使用 insert()方法可以向数据表添加一条数据&#xff0c;更多的字段采用默认 public function index() {$data [username > 犬夜叉,password > 123,gender > 男,email > wjl163.com,price > 999,details > 犬夜叉介绍];echo Db::name(user)-&g…

物理学如何推动生成式 AI 的发展

一、说明 许多尖端的生成式 AI 模型都受到物理学概念的启发。在本指南中&#xff0c;我们将从高层次上了解物理学如何推动人工智能的进步。不同的领域经常交叉授粉重要概念&#xff0c;这有助于推动其进步。数学概念为物理学的进步奠定了基础;物理学中的概念经常启发经济学的框…

LeetCode讲解篇之90. 子集 II

文章目录 题目描述题解思路题解代码 题目描述 题解思路 初始化一个变量start表示当前从哪里开始遍历nums 搜索过程的数字组合加入结果集 从start开始遍历nums 如果当前元素和前一个元素相等&#xff0c;前一个元素没被使用&#xff0c;则触发剪枝去重操作&#xff0c;跳过当…

如何在海洋cms添加广告

1:下载广告代码&#xff0c;注意广告中的图片要放在自己的server上&#xff0c;图片地址要改为自己的实际图片地址&#xff0c;图片存放位置&#xff0c;存在模板的image里面 2在海洋cms后台添加广告管理&#xff0c;只需要广告index.html代码&#xff0c;转换成js代码 广告名…

GAMES101-Assignment6

一、问题总览 需要加速结构来加速光线与场景的交点&#xff0c;本次练习中&#xff0c;重点关注物体划分算法Bounding Volume Hierarchy (BVH)。本练习要求实现Ray-Bounding Volume求交与BVH查找。 需要从上一次编程练习中引用以下函数: Render() in Renderer.cpp: 将你的光线…

抖音矩阵云混剪系统源码多平台多账号一站式管理(免授权版)

抖音矩阵云混剪系统源码 短视频矩阵营销系统V2.2.1(免授权版) 中网智达矩阵营销系统多平台多账号一站式管理,一键发布作品。智能标题,关键词优化,排名查询,混剪生成原创视频,账号分组,意向客户自动采集,智能回复,多账号评论聚合回复,免切换,免登陆发布….助力您在…

浅谈对Mybatis的理解

一、Mybatis的概述 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code&#xff0c;由谷歌托管&#xff0c;并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是支持普通SQL查询&#xff0c;存储过程和高级映射的优…

PLC-IoT 网关开发札记(2):Xamarin Forms 工程获取App当前的版本号

代码实现 在构建 Android App 时&#xff0c;写了一个 AboutPage。在 AboutPage 上显示 App 的当前版本号是常见的做法。使用 Xamarin.Foms 获取当前版本号的方法是使用 Xamarin.Forms 的 VersionTracking 类。 如下&#xff0c;我写了一个非常简单的 AboutPage&#xff0c;其…

1.单表查询

作业要求 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varc…

使用lodash原地起飞,总结了几个常用的lodash方法

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 什么是lodash lodash的按需引入 数组操作 求交集 求合集 求差集 求总和…

2024美赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

SystemC学习笔记 - Hello systemc world

Hello Systemc World 码农老规矩&#xff0c;先写一个hello world并输出&#xff0c;语法什么的后面再说&#xff0c;先能编译运行再说。 目录配置 使用examples里的配置&#xff0c;在examples/sysc目录下创建test目录&#xff0c;其下创建第一个test1的目录&#xff0c;如…

功能权限篇

文章目录 1. 如何设计一套权限系统1.1 目标1.2 权限模型1.2.1 模型一RBAC1.2.2 模型二ABAC 2.如何实现菜单的创建&#xff1f;2.1 表结构2.2 前端实现2.3 后端实现 3. 如何实现角色的创建&#xff1f;4.如何给用户分配权限 —— 将菜单赋予角色&#xff1f;5.如何给用户分配权限…

Linux学习之网络编程3(高并发服务器)

写在前面 Linux网络编程我是看视频学的&#xff0c;Linux网络编程&#xff0c;看完这个视频大概网络编程的基础差不多就掌握了。这个系列是我看这个Linux网络编程视频写的笔记总结。 高并发服务器 问题&#xff1a; 根据上一个笔记&#xff0c;我们可以写出一个简单的服务端…

您与此网站之间建立的连接不安全

连接不安全的主要原因之一是使用不安全的通信协议。在互联网传输中&#xff0c;如果使用的协议不加密&#xff0c;那么数据就容易受到窃听和篡改。另一个可能的原因是网站没有正确配置其安全证书&#xff0c;使得用户的连接没有得到适当的加密保护。 解决方法&#xff1a; 采用…

Android jar包编译及集成

Jar包编译和集成有两种编译方式&#xff0c;mk和bp&#xff0c;Android 7版本之后逐渐采用bp格式编译&#xff0c;目前14版本还是兼容mk方式编译&#xff0c;具体写法入下&#xff1a; Android jar包编译 mk&#xff1a; 如果需要打包到systemimg&#xff0c;则需要将此jar包添…

Ribbon学习思维导图

参考资料 1、OpenFeign与Ribbon源码分析总结与面试题 2、万字剖析OpenFeign整合Ribbon实现负载均衡的原理 3、扒一扒Nacos、OpenFeign、Ribbon、loadbalancer组件协调工作的原理 4、OpenFeign原来是这么基于Ribbon来实现负载均衡的

Gaara靶机练习

渗透测试 一.信息收集1.确定IP地址2.nmap扫描3.目录扫描 二.hydra爆破1.ssh连接2.信息探索 三.提权gdb提权提权 一.信息收集 1.确定IP地址 ┌──(root㉿kali)-[~/kali/web] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:10:3c:9b, IPv4: 192.168.9.10 S…

鸿蒙Harmony--AppStorage--应用全局的UI状态存储详解

无所求必满载而归&#xff0c;当你降低期待&#xff0c;降低欲望&#xff0c;往往会得到比较好的结果&#xff0c;把行动交给现在&#xff0c;用心甘情愿的态度&#xff0c;过随遇而安的生活&#xff0c;无论结果如何&#xff0c;都是一场惊喜的获得! 目录 一&#xff0c;定义 …