RestHighLevelClient集成ES 7.X

这篇具有很好参考价值的文章主要介绍了RestHighLevelClient集成ES 7.X。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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;//调用类别
}

插入数据文章来源地址https://www.toymoban.com/news/detail-558007.html

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);

到了这里,关于RestHighLevelClient集成ES 7.X的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Elasticsearch学习笔记五】es常用的JAVA API、es整合SpringBoot项目中使用、利用JAVA代码操作es、RestHighLevelClient客户端对象

    目录 一、Maven项目集成Easticsearch 1)客户端对象 2)索引操作 3)文档操作 4)高级查询 二、springboot项目集成Spring Data操作Elasticsearch 1)pom文件 2)yaml 3)数据实体类 4)配置类 5)Dao数据访问对象 6)索引操作 7)文档操作 8)文档搜索 三、springboot项目集成bboss操作elasticsearch

    2023年04月09日
    浏览(16)
  • spring data elasticsearch使用7.x客户端兼容es 8.x和使用ssl构建RestHighLevelClient

    es在7.x中默认加入elastic security组件所以java client需要使用ssl连接es server. es 8.x 中废弃了 RestHighLevelClient ,使用新版的 java api client ,但是spring data elasticsearch还未更新到该版本.所以需要兼容es 8.x 如下是RestHighLevelClient构建方法: spring data elasticsearch客户端依赖(基于spring boot2.7使用最新

    2024年02月13日
    浏览(19)
  • 原生语言操作和spring data中RestHighLevelClient操作Elasticsearch,索引,文档的基本操作,es的高级查询.查询结果处理. 数据聚合.相关性系数打分

    原生语言操作和spring data中RestHighLevelClient操作Elasticsearch,索引,文档的基本操作,es的高级查询.查询结果处理. 数据聚合.相关性系数打分

    ​ Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasti

    2024年02月05日
    浏览(70)
  • 初识Elasticsearch——GO集成ES

    初识Elasticsearch——GO集成ES

    Elasticsearch是一个分布式文档存储。Elasticsearch存储的是序列化为JSON文档的复杂数据结构,而不是以行列数据的形式存储的信息。当集群中有多个Elasticsearch节点时,存储的文档分布在整个集群中,可以立即从任何节点访问。 当存储文档时,它几乎是实时的——在1秒内就可以被

    2024年02月03日
    浏览(12)
  • ElasticSearch基础学习(SpringBoot集成ES)

    ElasticSearch基础学习(SpringBoot集成ES)

    一、概述 什么是ElasticSearch? ElasticSearch,简称为ES, ES是一个开源的高扩展的 分布式全文搜索引擎 。 它可以近乎实时的 存储、检索 数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB级别 的数据。 ES也使用 Java 开发并使用 Lucene 作为其核心来实现所有索引和搜索的

    2024年02月13日
    浏览(11)
  • es Elasticsearch 六 java api spirngboot 集成es

    es Elasticsearch 六 java api spirngboot 集成es

    目录 Java restApi Springboot 集成es 新增-同步 新增-异步 增删改查流程 _bulk 批量操作 新增-同步 新增-异步 增删改查流程 创建请求、2.执行、3.查看返回结果     _bulk 批量操作 ok 持续更新

    2024年02月10日
    浏览(10)
  • elasticSearch集群 springboot集成es 完全解析

    elasticSearch集群 springboot集成es 完全解析

    #编写compose.yml配置文件 #每个节点都创建一个elasticsearch.yml文件 用到的命令: systemctl start docker docker-compose up es和kibana版本必须一样 environment:配置容器内的环境变量 networks:创建一个名为elastic的局域网,让各节点以及kibana,es-head相互联系 network.host: 0.0.0.0:意为监听一切地址,可

    2024年02月03日
    浏览(12)
  • ElasticSearch | SpringBoot集成ES异常以及处理方法

    ElasticSearch | SpringBoot集成ES异常以及处理方法

    异常 Elasticsearch exception Elasticsearch exception [type=cluster_block_exception, reason=index [video_struct_vehicle] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]; 产生原因 服务磁盘内存不足,导致无法删除,所有索引都变成了只读 read-only状态。 一旦在存储超过95%的磁盘中的节点上分配了一个

    2024年02月13日
    浏览(10)
  • 搜索引擎ES-RestHighLevelClient

    搜索引擎ES-RestHighLevelClient

    前言:本篇文章,主要讲述如何引入RestHighLevelClient,以及对其API的调用,属于入门级别的接口实用。适用于由于工作需要及时了解的童靴们以及初学者。想要了解ES底层更多内容的童鞋们,本篇文章并不适合 ! 前言:对比mysql,了解ES 首先通过图片对比我们了解的关系型数据

    2024年02月08日
    浏览(9)
  • ES客户端RestHighLevelClient的使用

    ES客户端RestHighLevelClient的使用

    默认情况下,ElasticSearch使用两个端口来监听外部TCP流量。 9200端口:用于所有通过HTTP协议进行的API调用。包括搜索、聚合、监控、以及其他任何使用HTTP协议的请求。所有的客户端库都会使用该端口与ElasticSearch进行交互。 9300端口:是一个自定义的二进制协议,用于集群中各

    2024年02月03日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包