当前位置: 首页 > article >正文

java操作ES(一)RestHighLevelClient(2)集成与demo

一、集成方法

1、pom依赖
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.x.x</version> <!-- 请使用与你的Elasticsearch版本相匹配的版本 -->
</dependency>
2、配置文件
demo.es.active=true
demo.es.hosts= xxx.xx.xxx.xx
demo.es.path-prefix=xxx
demo.es.connect-timeout=5000
demo.es.socket-timeout=10000
demo.es.max-conn-total=100
demo.es.max-conn-per-route=100
3、javaBean配置
@Slf4j
@Configuration
@ConditionalOnExpression("${demo.es.active:false}")
public class RestHighLevelClientConfig {

    @Value("${demo.es.hosts}")
    private String hosts;

    @Value("${demo.es.connect-timeout}")
    private int connectTimeout;

    @Value("${demo.es.socket-timeout}")
    private int socketTimeout;

    @Value("${demo.es.max-conn-total}")
    private int maxConnTotal;

    @Value("${demo.es.max-conn-per-route}")
    private int maxConnPerRoute;

    @Value("${demo.es.path-prefix}")
    private String pathPrefix;

    @Bean("restHighLevelClient")
    public RestHighLevelClient getRestHighLevelClient() {
        RestClientBuilder builder = RestClient.builder(resolveHosts(hosts));
        builder.setHttpClientConfigCallback(
                httpClientBuilder -> {
                    
                    httpClientBuilder.setSSLHostnameVerifier((hostname, session) -> {
                        try {
                            URL url = new URL(hosts);
                            return hostname.equalsIgnoreCase(url.getHost());
                        } catch (MalformedURLException | RuntimeException e) {
                            return false;
                        }
                    });
                    httpClientBuilder.setMaxConnTotal(maxConnTotal);
                    httpClientBuilder.setMaxConnPerRoute(maxConnPerRoute);
                    httpClientBuilder.setSSLContext(getSSLContext());
                    return httpClientBuilder;
                });

        builder.setPathPrefix(pathPrefix);
        builder.setRequestConfigCallback(
                requestConfigBuilder ->
                        requestConfigBuilder
                                .setConnectTimeout(connectTimeout)
                                .setSocketTimeout(socketTimeout));

        return new RestHighLevelClient(builder);
    }

    private HttpHost[] resolveHosts(String hosts) {
        if (StringUtils.isBlank(hosts)) {
            return new HttpHost[0];
        }
        return Arrays.stream(StringUtils.split(hosts, ","))
                .filter(StringUtils::isNotBlank)
                .map(HttpHost::create)
                .toArray(HttpHost[]::new);
    }

    private SSLContext getSSLContext() {
        return SSLContexts.createDefault();
    }
}
4、使用

 代码中直接注入RestHighLevelClient 使用即可。

@Autowired 
private RestHighLevelClient restHighLevelClient;

二、demo


http://www.kler.cn/a/390409.html

相关文章:

  • 容器技术在DevOps中的应用
  • 性能测试|JMeter接口与性能测试项目
  • MySQL技巧之跨服务器数据查询:进阶篇-从A数据库复制到B数据库的表中
  • vue中如何关闭eslint检测?
  • Linux 进程线程间通信总结
  • 微信小程序=》基础=》常见问题=》性能总结
  • freeRTOS学习笔记
  • 如何优化Elasticsearch的查询性能?
  • Mac上无法访问usr/local的文件
  • 【含开题报告+文档+源码】基于SpringBoot的智慧养老医护管理系统
  • Android CarrierConfig 参数项和正则匹配逻辑
  • OAK相机:纯视觉SLAM在夜晚的应用
  • Python——设集P合为A={1,2,4,5},B={x|x**2-5*x+6=0},请计算出集合A与B的并,交,差。
  • 开源模型应用落地-glm模型小试-glm-4-9b-chat-智谱大模型开放平台(七)
  • FASTLIO2建图学习笔记
  • 网络为什么要分层:OSI模型与TCP/IP模型
  • 【大数据学习 | HBASE高级】region split机制和策略
  • GPU性能测试,环境搭建笔记,transformers/huggingface_hub改国内源,BertLayer import 报错
  • Spring Boot编程训练系统:前端与后端集成
  • Android Parcelable和Serializable的区别与联系
  • 面试基础算法题-日常面试足够
  • 网络管理之---3种网络模式配置
  • C++11新特性(二)
  • NFS服务、内核配置菜单
  • JVM学习之路(5)垃圾回收
  • 【Qt】QTreeView 和 QStandardItemModel的关系