es 插入数据_ES + Spring boot的正确姿势

本文详细介绍了如何在Spring Boot应用中集成Elasticsearch(ES),包括pom依赖配置、客户端初始化。接着,通过Java API展示了创建索引、批量插入、更新、删除数据以及各种查询操作的实现,包括单条件查询、多条件查询+排序+分页,为ES数据操作提供了全面的示例。
摘要由CSDN通过智能技术生成

前言

在前边我们探讨了ES的基本概念以及根据不同的场景选择数据迁移的方案。在这一篇我们来探讨如何与Spring boot集成,以及为了平滑地从Mysql迁移到ES中我们如何”翻译SQL“。

一、Spring Boot集成ES

第一步我们就要实现Spring boot和ES集成,在Spring boot中主要有Java REST Clientspring-data-elasticsearch两种方式,这里我建议使用Elasticsearch官方提供的Java High Level REST Client来集成,也方便在生产环境中使用阿里云的ES云服务。关键的版本信息如下:

  • ES集群:7.3.0

  • ES相关依赖:7.3.0

这里有两点需要注意:

  • High Level Client能够向上兼容,例如7.3.0版本的Java High Level REST Client能确保与大于等于7.3.0版本的Elasticsearch集群通信。为了保证最大程度地使用最新版客户端的特性,推荐High Level Client版本与集群版本一致。

  • 在集成的过程中可能会踩到一些坑,因为Spring Boot的版本、ES集群的版本、High Level Client的版本之间会存在”关联关系“,所以当Demo无法正常跑起来的时候能做的就是多尝试一些High Level Client版本。

1、pom依赖
org.elasticsearch.clientelasticsearch-rest-high-level-client7.3.0

org.elasticsearchelasticsearch7.3.0

org.elasticsearch.clientelasticsearch-rest-client7.3.0

org.elasticsearch.pluginrank-eval-client7.3.0

org.elasticsearch.pluginlang-mustache-client7.3.0
复制代码

2、初始化客户端

@Configuration
public class EsConfig {

@Value("${elasticsearch.host}")
public String host;

/**
* 之前使用transport的接口的时候是9300端口,现在使用HighLevelClient则是9200端口
*/
@Value("${elasticsearch.port:9200}")
public int port;

public static final String SCHEME = "http";

@Value("${elasticsearch.username:admin}")
public String username;

@Value("${elasticsearch.authenticationPassword}")
public String authenticationPassword;

@Bean(name = "remoteHighLevelClient")
public RestHighLevelClient restHighLevelClient() {
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username,
authenticationPassword));
RestClientBuilder builder = RestClient.builder(new HttpHost(host, port, SCHEME)).
setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
.setDefaultCredentialsProvider(credentialsProvider));
return new RestHighLevelClient(builder);
}
}
复制代码

在上边的代码中需要注意username和authenticationPassword的认证信息都是在Kibana中设置的。

二、Java API

下面的代码片段均能在单元测试中正常运行,在执行下边的单元测试之前,我们先创建一个_template,大家可以选择在Kibana提供的Dev Tools里边执行。

PUT _template/hero_template
{
"index_patterns&
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值