RestHighLevelClient集成ES 7.X

2023-11-09

Maven依赖

依赖版本号和elasticsearch版本号对应起来

		<dependency>
			<groupId>org.elasticsearch.client</groupId>
			<artifactId>elasticsearch-rest-client</artifactId>
			<version>7.17.6</version>
		</dependency>

		<!-- elasticSearch -->
		<dependency>
			<groupId>org.elasticsearch.client</groupId>
			<artifactId>elasticsearch-rest-high-level-client</artifactId>
			<version>7.17.6</version>
		</dependency>

		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
			<version>7.17.6</version>
			<scope>compile</scope>
		</dependency>

YML配置

spring:
  elasticsearch:
    rest:
      uris: http://127.0.0.1:9200,http://127.0.0.1:9201
      username: elastic
      password: ******

ElasticSearchConfig

集群带用户名密码


import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;

@Configuration
public class ElasticSearchConfig {
    @Value("${spring.elasticsearch.rest.uris}")
    private String[] uris;

    @Value("${spring.elasticsearch.rest.username}")
    private String userName;

    @Value("${spring.elasticsearch.rest.password}")
    private String passWord;
    @Bean
    public RestHighLevelClient restHighLevelClient() {
        HttpHost[] httpHosts = Arrays.stream(uris).map(HttpHost::create).toArray(HttpHost[]::new);
        RestClientBuilder builder = RestClient.builder(httpHosts);

        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, passWord));
        builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider));
        return new RestHighLevelClient(builder);
}

集群无用户名密码


import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;

@Configuration
public class ElasticSearchConfig {
    @Value("${spring.elasticsearch.rest.uris}")
    private String[] uris;
    @Bean
    public RestHighLevelClient restHighLevelClient() {
 	HttpHost[] httpHosts = Arrays.stream(uris).map(HttpHost::create).toArray(HttpHost[]::new);
 	RestClientBuilder builder = RestClient.builder(httpHosts);
		return new RestHighLevelClient(builder);
    }

}

实体类

@Data
public class CallingLog implements Serializable {

	private static final long serialVersionUID = 6211869625504817559L;


	private String id;

	private String index;
	private String type;
	
	private Date beginTime;
	private Date endTime;
	private String request;
	private String response;
	private String remark;
	private String callType;//调用类别
}

插入数据

import com.alibaba.fastjson.JSONObject;
import org.apache.poi.ss.formula.functions.T;
import org.elasticsearch.action.DocWriteRequest;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.xcontent.XContentType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.lang.reflect.Field;
import java.util.Date;
@Component
public class EsClientUtils {

    private static final Logger logger = LoggerFactory.getLogger(EsClientUtils.class);

    /**
     * 默认超时时间
     */
    private long timeOut = 1L;

    @Autowired
    private RestHighLevelClient restHighLevelClient;
    private Class<? extends T> tClass;

    /**
     * 单条数据插入
     *
     * @param t 放入的对象
     * @return 响应信息,放入es的基本信息(index、type、id)
     */
    public IndexResponse add(CallingLog t) throws NoSuchFieldException {
        if (checkIndexTypeId(t)) {
            return null;
        }
        // 按actv_log_230713 格式生成索引
        String indexStr = DateUtils.formatDate(new Date(), "yyMMdd");
        String index = t.getIndex();
        String type = "_doc";
        String id = IdUtils.fastUUID();
        final String jsonString = JSONObject.toJSONString(t);
        final IndexRequest request = new IndexRequest(t.getIndex() + indexStr, type, id)
                .source(jsonString, XContentType.JSON)
                .opType(DocWriteRequest.OpType.CREATE)
                .timeout(TimeValue.timeValueSeconds(timeOut));
        IndexResponse indexResponse = null;
        try {
            indexResponse = restHighLevelClient.index(request, RequestOptions.DEFAULT);
        } catch (Exception e) {
            logger.error("es(index:{},type:{},id:{})添加失败:", index, e);
        }
        return indexResponse;
    }

    /**
     * 检验必要的值
     *
     * @param t 与es存储对应的对象
     * @return true不符合,false符合
     */
    private boolean checkIndexTypeId(CallingLog t) {
        return t == null || t.getIndex() == null;
    }

}

使用实例

EsClientUtils esClientUtils = ApplicationContextHelper.getBean(EsClientUtils.class);
        CallingLog callingLog = new CallingLog();
        callingLog.setIndex("actv_test");
        callingLog.setCallName("3333");
        callingLog.setRequest("7777");
        callingLog.setRemark("6666");

        callingLog.setBeginTime(new Date());
        callingLog.setEndTime(new Date());
        callingLog.setResponse("2222");
        callingLog.setServiceNum("3333333");
        esClientUtils.add(crmCallingLog);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RestHighLevelClient集成ES 7.X 的相关文章

随机推荐

  • 怎么分析用户活跃、指标波动

    相关文章 用户画像 3种标签类型 8大系统模块 知道用户画像标签有哪些维度 应用场景体系 是种什么样的体验 用户运营 用户分析 店铺数据分析 小程序数据分析 思维导图 数据分析全知识 思维导图 Xmind思维导图 常用快捷键使用 参考作者
  • 计算机视觉:图像检测和图像分割有什么区别?

    人工智能中的图像处理 人工智能对于图像处理有不同的任务 在本文中 我将介绍目标检测和图像分割之间的区别 在这两个任务中 我们都希望找到图像中某些感兴趣的项目的位置 例如 我们可以有一组安全摄像头照片 在每张照片上 我们想要识别照片中所有人的
  • 怎么查看mysql密码

    MySQL数据库查看密码的方法如下 以系统管理员身份运行cmd 查看mysql是否已经启动 如果已经启动 就停止 net stop mysql 切换到MySQL安装路径下 D WAMPMySQL 5 6 36in 如果已经配了环境变量 可以
  • LLVM-Clang编译器安装和使用

    LLVM不仅仅是一个编译器 同时提供了模块化的功能和库 用于编译器的开发和功能扩展 常规的一个编译器分为前端 优化器和后端 LLVM编译器也不例外 Clang就是属于一个编译器的前端部分 LLVM属于优化器和后端 当然LLVM也可以支持其他
  • C++常用算术生成算法剖析

    C STL库中常用生成算术算法有 accumulate 和 fill 在调用这些算法之前需要包含头文件 include
  • three.js加载PLY格式模型(vue中使用three.js56)

    加载PLY格式模型 1 demo效果 2 实现要点 2 1 PLY模型放置路径 2 2 加载PLY模型 2 3 创建粒子材质纹理 2 4 格式化为粒子系统 3 demo代码 1 demo效果 如上图 该demo通过PLYLoader加载了P
  • 提示计算机丢失MSVCP140.dll怎么办?这三个修复方法可解决

    最近在使用电脑的过程中 遇到了一个问题 即缺少了MSVCP140 dll文件 这个文件是一个动态链接库文件 常用于Windows操作系统中的应用程序中 由于缺少这个文件 会导致计算机系统无法运行某些软件或游戏 丢失MSVCP140 dll可
  • NeRF基于线稿生成逼真三维人脸,细节风格随意改,论文已上SIGGRAPH

    来源 机器之心 本文约3300字 建议阅读5分钟 这个方法可以高效构建三维模型 精细程度很高 高真实感且精确可控的三维人脸建模是数字人构建中的重要问题之一 目前 使用现有的基于网格的人脸建模方法需要专业的人员使用复杂的软件并投入大量的时间和
  • C# 运用开放协议连接拧紧枪控制器(马头)

    以下为简单通讯测试源码 只提供参考 TcpClient tcpClient new TcpClient tcpClient Connect 127 0 0 1 4545 端口默认4545 建立通讯 var command 002000010
  • 毕业设计 Spring Boot个人健康信息管理系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 2 1 系统开发流程 3 3 系统结构设计 4 项目获取 1 项目简介 Hi 各位同学好呀 这里是M学姐 今天向大家分享一个今年 20
  • 鸿蒙运行项目显示error: failed to start ability. Error while Launching activity.

    DevEco Stidio使用本地模拟器运行项目显示 error failed to start ability Error while Launching activity 实际上你的项目已经装进了模拟器中 只是模拟器出现了问题 解决方法
  • 04C++中模板和STL介绍

    模板和STL是C 比较重要的部分 本章仅做简单了解 文章目录 一 模板 1 1 函数模板 1 1 1 两种函数模板的实例化 1 1 2 模板参数的匹配原则 1 2 类模板 二 STL 一 模板 对于一个交换函数 虽然C 支持函数重载 我们可
  • Microsoft MSDT任意代码执行漏洞(CVE-2022-30190)

    Microsoft Windows 支持诊断工具 MSDT 远程代码执行漏洞复现过程 漏洞描述 MSDT Microsoft Support Diagnostics Tool 微软支持诊断工具 是一种实用程序 用于排除故障并收集诊断数据以供
  • ROW_NUMBER() OVER函数的基本用法 / Rank() over()的用法

    转自 http www cnblogs com icebutterfly archive 2009 08 05 1539657 html 语法 ROW NUMBER OVER PARTITION BY COLUMN ORDER BY COL
  • Processing如何打包导出中文字体

    Processing如何打包导出中文字体 文章目录 Processing如何打包导出中文字体 原理 步骤 用途 原理 使用Processing自带的字体创建工具 创建 vlw字体 该工具为每个character创建一个贴图 然后将它们作为
  • 教你如何根据需求编写测试用例,不用写一行代码,使用ChatGPT4自动完成。

    首先来张效果图 需求我是放到requirements txt文档里 输出的测试用例是放到test case1 txt 整个代码我是让ChatGPT4自动给我写的 我用的prompt提示语是 我的想法是这样 通过Python代码 和API k
  • Android中的指纹识别

    1 第一步首先在build gradle中导入咱们的指纹识别依赖 dependencies implementation androidx appcompat appcompat 1 1 0 implementation com googl
  • 什么是线程同步和线程异步?

    1 什么是线程同步和线程异步 线程同步 是多个线程同时访问同一资源 等待资源访问结束 浪费时间 效率不高 线程异步 访问资源时 如果有空闲时间 则可在空闲等待同时访问其他资源 实现多线程机制 异步处理就是 你现在问我问题 我可以不回答你 等
  • C++11中enable_shared_from_this的用法解析

    什么是 enable shared from this 下面摘自 cpp reference 中概述 C 11 开始支持 enable shared from this 它是一个模板类 定义在头文件
  • RestHighLevelClient集成ES 7.X

    Maven依赖 依赖版本号和elasticsearch版本号对应起来