【SpringBoot笔记27】SpringBoot集成ES数据库之操作index索引(创建、删除、获取)

news2025/1/16 7:43:05

这篇文章,主要介绍SpringBoot如何操作ES数据库中的index索引(创建、删除、获取)。

目录

一、SpringBoot操作ES索引

1.1、创建索引

1.2、删除索引

1.3、获取索引

1.4、判断索引是否存在


一、SpringBoot操作ES索引

ES的高级客户端中,提供了一个【indices()】方法,这个方法可以获取一个专门用于操作index索引的API。

// 获取索引客户端
IndicesClient indicesClient = highRestClient.indices();

1.1、创建索引

ES创建索引,需要创建一个索引的请求对象【CreateIndexRequest】,创建索引的时候,需要指定索引的名称,可以通过构造方法指定索引名称,并且ES中的每一个API几乎都提供了一个RequestOptions配置项参数,通过这个参数可以设置这次HTTP请求的相关参数。如果不想设置,也可以采用默认的配置项,只需要通过【RequestOptions.DEFAULT】获取即可。

注意:当索引已经存在的时候,再次创建索引就会抛出一个异常。

package com.spring.boot.demo.controller;

import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

/**
 * @author ZhuYouBin
 * @version 1.0.0
 * @Date: 2022/11/19 22:24
 * @Description ES 测试类
 */
@RestController
@RequestMapping("/api/es")
public class TestController {

    @Autowired
    private RestHighLevelClient highRestClient;

    @GetMapping("/createIndex")
    public String createIndex(String indexName) throws IOException {
        // 获取索引客户端
        IndicesClient indicesClient = highRestClient.indices();
        // 创建索引请求对象: 传入一个索引名称
        CreateIndexRequest createIndexRequest = new CreateIndexRequest(indexName);
        // 执行创建索引的请求
        // RequestOptions.DEFAULT 指定名称的配置项
        CreateIndexResponse response = indicesClient.create(createIndexRequest, RequestOptions.DEFAULT);
        // 获取响应信息
        String index = response.index();
        System.out.println("索引名称: " + index);
        // 索引是否创建成功
        boolean acknowledged = response.isAcknowledged();
        System.out.println("索引是否创建成功: " + acknowledged);
        return "success.";
    }

}

1.2、删除索引

ES删除索引,可以通过【DeleteIndexRequest】请求指定要删除的索引名称,可以同时删除多个索引。

注意:当索引不存在的时候,删除不存在的索引会抛出异常。

package com.spring.boot.demo.controller;

import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

/**
 * @author ZhuYouBin
 * @version 1.0.0
 * @Date: 2022/11/19 22:24
 * @Description ES 测试类
 */
@RestController
@RequestMapping("/api/es")
public class TestController {

    @Autowired
    private RestHighLevelClient highRestClient;

    @GetMapping("/deleteIndex")
    public String deleteIndex() throws IOException {
        // 获取索引客户端
        IndicesClient indicesClient = highRestClient.indices();
        // 创建删除索引的请求
        DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("idx_name_2022");
        // 创建执行删除索引的请求
        // RequestOptions.DEFAULT 指定名称的配置项
        AcknowledgedResponse response = indicesClient.delete(deleteIndexRequest, RequestOptions.DEFAULT);
        // 索引是否创建成功
        boolean acknowledged = response.isAcknowledged();
        System.out.println("索引是否删除成功: " + acknowledged);
        return "success.";
    }

}

1.3、获取索引

获取索引需要创建一个【GetIndexRequest】对象,该对象构造方法可以传递需要查询的索引名称,可以传递多个索引名称。

注意:如果查询的索引不存在,那么就会抛出一个索引不存在的异常ElasticsearchStatusException。

package com.spring.boot.demo.controller;

import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.client.indices.GetIndexResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

/**
 * @author ZhuYouBin
 * @version 1.0.0
 * @Date: 2022/11/19 22:24
 * @Description ES 测试类
 */
@RestController
@RequestMapping("/api/es")
public class TestController {

    @Autowired
    private RestHighLevelClient highRestClient;

    @GetMapping("/getIndex")
    public String getIndex() throws IOException {
        // 获取索引客户端
        IndicesClient indicesClient = highRestClient.indices();
        // 创建获取索引的请求对象
        // 当索引不存在的时候,就会抛出一个异常: ElasticsearchStatusException
        GetIndexRequest getIndexRequest = new GetIndexRequest("idx_name_2021", "idx_name_2022");
        // 执行请求
        // RequestOptions.DEFAULT 指定名称的配置项
        GetIndexResponse response = indicesClient.get(getIndexRequest, RequestOptions.DEFAULT);
        // 处理响应信息
        String[] indices = response.getIndices();
        for (String index : indices) {
            System.out.println("索引名称是: " + index);
        }
        return "success.";
    }

}

运行结果如下所示:

1.4、判断索引是否存在

上面查询索引的时候,如果索引不存在,就会抛出异常,为了避免出现异常,我们可以首先判断一下索引是否存在,如果存在则继续执行相关操作,否则创建新索引、或者给出提示信息之类的。

可以通过调用【exists()】方法判断某个索引是否存在,该方法返回的是一个boolean类型的值。

注意:当判断多个索引的时候,所有的索引都存在,才会返回true,否则返回false。

package com.spring.boot.demo.controller;

import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

/**
 * @author ZhuYouBin
 * @version 1.0.0
 * @Date: 2022/11/19 22:24
 * @Description ES 测试类
 */
@RestController
@RequestMapping("/api/es")
public class TestController {

    @Autowired
    private RestHighLevelClient highRestClient;

    @GetMapping("/existsIndex")
    public String existsIndex() throws IOException {
        // 获取索引客户端
        IndicesClient indicesClient = highRestClient.indices();
        // 创建获取索引的请求对象
        // 当索引不存在的时候,就会抛出一个异常: ElasticsearchStatusException
        GetIndexRequest getIndexRequest = new GetIndexRequest("idx_name_2021", "idx_name_2022");
        // 执行请求
        // RequestOptions.DEFAULT 指定名称的配置项
        boolean exists = indicesClient.exists(getIndexRequest, RequestOptions.DEFAULT);
        if (exists) {
            // 索引都存在
            return "index exists.";
        }
        // 索引不存在
        return "index does not exists.";
    }

}

到此,SpringBoot操作ES数据库索引index就介绍完啦。

综上,这篇文章结束了,主要介绍SpringBoot如何操作ES数据库中的index索引(创建、删除、获取)。

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

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

相关文章

一、数据库查询语句(单表查询篇)

一、数据库查询语句(单表查询篇) 单表查询&#xff1a;SELECT 语句仅从一个表/视图中检索数据&#xff0c;称单表查询。即其中的<普通表> 使用的是[<模式名>.]<基表名|视图名>。 该查询的语句所依赖的表是创建数据库实例默认勾选的两个实例&#xff1a;BOOKS…

Python数据分析实战-实现txt文件与列表(list)相互读写转换(附源码和实现效果)

前面我介绍了可视化的一些方法以及机器学习在预测方面的应用&#xff0c;分为分类问题&#xff08;预测值是离散型&#xff09;和回归问题&#xff08;预测值是连续型&#xff09;&#xff08;具体见之前的文章&#xff09;。 从本期开始&#xff0c;我将做一个数据分析类实战…

python对指定字符串逆序的几种方法

对于一个给定的字符串&#xff0c;逆序输出&#xff0c;这个任务对于python来说是一种很简单的操作&#xff0c;毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了&#xff0c;今天总结了一下python中对于字符串的逆序输出的6种常用的方法 方法一&#xff1a;直接使…

04 数学软件与建模---Lingo

(12条消息) Lingo学习笔记&#xff08;一&#xff09;——语法入门_小白成长之旅的博客-CSDN博客 1.在LINGO中求解如下的LP问题&#xff1a; min2*x13*x2; x1x2>350; x1>100; 2*x1x2<600; 2.LINGO中的集 2.1 集的定义 对实际问题建模的时候&#xff0c;总会遇到一群…

java单例模式--懒汉式、饿汉式(第二次学习)

目录 java单例模式--懒汉式、饿汉式 1、要点 2、单例模式的类型&#xff08;五种&#xff09; 2.1 饿汉式 2.2 枚举饿汉式&#xff08;推荐使用&#xff09; 2.3 懒汉式单例 2.4 DCL懒汉式&#xff08;双检锁的懒汉式&#xff09; 2.5 内部类懒汉式&#xff08;推荐使用…

vue2 sass 安装及使用2

根据上一篇 vue2 sass 安装及使用_lsswear的博客-CSDN博客&#xff0c;使用vue-cli 5版本继续尝试安装sass。 本地环境&#xff1a; win10 vue2 vue-cli 5 sass安装 vue create testsass npm i node-loaderadded 2 packages in 6snpm i sass-loaderadded 1 package in 3s…

【pytorch】MNIST 梯度上升法求使得某类概率最大的样本

目标&#xff1a;用 MNIST 训练一个 CNN 模型&#xff0c;然后用梯度上升法生成一张图片&#xff0c;使得模型对这张图片的预测结果为 8 import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import torchvi…

jsp科研管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 科研管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发&#xff0c;数据库为Mysql&#xff0c;使用ja…

面试:KOOM内存泄漏的监控

LeakCannary 为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary&#xff1f;因为它是真强啊&#xff01;_慕课手记 内存快照是在触发了onDestory中做的 目前&#xff0c;LeakCanary 支持以下五种 Android 场景中的内存泄漏监测&#xff1a; 1、已销毁的 Activity 对象…

基于java+ssm的在线投票管理系统-计算机毕业设计

项目介绍 基于SSM的在线投票系统以XXX学院为背景&#xff0c;运用在校所学习的软件开发原理&#xff0c;采用SpringSpringMVCMyBatis技术和MySQL数据库构建一个基于B/S模式的在线投票系统。本系统在设计之初&#xff0c;结合网络上。现有的在线投票系统。经过具体分析之后都出…

【Go】 力扣 - 剑指 Offer 第五天 - 二维数组中的查找

[Go] 力扣 - 剑指 Offer 第五天 - 二维数组中的查找题目来源题目描述示例题目分析算法暴力法代码实现复杂度分析二分法代码实现复杂度分析模拟 BST 标记查找法代码实现复杂度分析结尾耐心和持久胜过激烈和狂热。 题目来源 来源&#xff1a;力扣&#xff08;LeetCode&#xff0…

TestStand-从LabVIEW创建TestStand数据类型的簇

文章目录从LabVIEW创建TestStand数据类型的簇从LabVIEW创建TestStand数据类型的簇 TestStand提供数字、字符串、布尔值和对象引用内置数据类型。 TestStand还提供了几种标准的命名数据类型&#xff0c;包括路径、错误、LabVIEW模拟波形等。可以通过创建容器数据类型来保存任何…

【第四部分 | JavaScript 基础】1:JS概述、变量及输入输出

目录 | 概述 | JS的书写位置 | 输入输出 | 变量 命名规范 基本使用 通过输入语句prompt把信息赋值给变量 | 数据类型 JS数据类型的特别 简单数据类型 简介 简单数据类型 Number 简单数据类型 String 简单数据类型 Boolean、Undefined、Null 获取类型 类型转换 | …

巴菲特斥资290亿抄底,台积电跌成“白菜价”?

11月14日&#xff0c;巴菲特旗下伯克希尔向美国证券交易委员会&#xff08;SEC&#xff09;提交了13F季度报告。报告显示&#xff0c;三季度伯克希尔斥资41亿美元&#xff08;约290亿人民币&#xff09;大幅买入台积电。 报告发出后&#xff0c;第二天台积电美股涨超6%&#x…

多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

GLAD:利用全息图实现加密和解密

概述 全息图能够通过两束相干光相干叠加获得。用其中一束光照射生成的全息图就可以得到另一束相干光&#xff0c;这样全息图就可以用作加密/解密的装置了。 系统描述 在本例中一个复杂的随机图样作为参考光源&#xff0c;用来恢复全息图样对应的物光源。加密过程中&am…

单目标应用:人工兔优化算法(Artificial Rabbits Optimization ,ARO)求解旅行商问题TSP(提供MATLAB代码)

一、算法简介 人工兔优化算法&#xff08;Artificial Rabbits Optimization &#xff0c;ARO&#xff09;由Liying Wang等人于2022年提出&#xff0c;该算法模拟了兔子的生存策略&#xff0c;包括绕道觅食和随机躲藏&#xff0c;并通过能量收缩在两种策略之间转换。绕道觅食策…

显示订单列表【项目 商城】

显示订单列表【项目 商城】前言显示订单列表1 持久层1.1 规划SQL语句1.2 实现接口与抽象方法1.3 配置SQL映射测试2 业务层2.1 规划异常2.2 编写接口与抽象方法2.3 实现抽象方法测试3 控制器3.1 处理异常3.2 设计请求3.3 处理请求测试4 前端页面测试前言 写作于 2022-10-14 17:…

【MySQL】安装与配置(内附安装包+未将对象引用设置到对象的实例的错误解决方法)

目录 一、数据库分类 &#xff08;1&#xff09;关系型数据库&#xff08;RDBMS&#xff09; &#xff08;2&#xff09;非关系型数据库 二、MySQL服务器安装 三、安装包文件分享 一、数据库分类 数据库大体可以分为关系型数据库和非关系型数据库 &#xff08;1&#xff0…

U盘复制错误0x80071ac3如何解决?

U盘是一款移动存储设备&#xff0c;但是在使用中也会遇到一些错误问题&#xff0c;比如文件复制、粘贴或移动时提示0x80071ac3错误代码要如何解决呢&#xff1f;下面就和小编一起来看看解决办法吧。 方法一&#xff1a; 1、有些用户是使用U盘时出现的问题&#xff0c;先按下快捷…