前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过spring-data-elasticsearch连接腾讯云ES

通过spring-data-elasticsearch连接腾讯云ES

原创
作者头像
吴容
发布2019-10-29 19:03:39
5.6K0
发布2019-10-29 19:03:39
举报

spring-data-elasticsearch有两种方式连接Elasticsearch,一种是TCP的方式,通过9300端口连接,还有一种是HTTP的方式,通过9200端口连接。腾讯云ES提供了9200端口的HTTP方式来连接ES。其中spring-data-elasticsearch的版本和Elasticsearch的版本需要匹配和兼容,本文使用的elasticsearch版本为6.4.3。

1、添加maven依赖包:

代码语言:javascript
复制
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-elasticsearch</artifactId>
    <version>3.2.0.RELEASE</version>
</dependency>

其中Elasticsearch版本和Spring-data-elasticsearch版本之间的关系可参考下图(图片来自官网):

spring-data-elasticsearch与Elasticsearch的版本对应关系
spring-data-elasticsearch与Elasticsearch的版本对应关系

2、配置ElasticsearchRestTemplate

向Spring IoC容器中注入Bean ElasticsearchRestTemplate :

代码语言:java
复制
@Configuration
public class EsClientConfig {
    @Bean
    RestHighLevelClient restHighLevelClient() {
        ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                .connectedTo("ip",port)                    // es的http连接地址
                .withBasicAuth("username", "password")    // 如果开启了用户名密码验证,则需要加上
                .build();
        return RestClients.create(clientConfiguration).rest();
    }
@Bean
    ElasticsearchRestTemplate elasticsearchRestTemplate(@Autowired RestHighLevelClient restHighLevelClient) {
        return new ElasticsearchRestTemplate(restHighLevelClient);
    }
}

3、注入ElasticsearchRestTemplate

使用注入的Bean来进行对ES的操作,以新增和获取一条document为例:

首先创建一个POJO类:

代码语言:java
复制
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "person")
public class Person {
    private int id;
    private String name;
    private int age;
}

注入ElasticsearchRestTemplate,使用ElasticsearchRestTemplate中提供的一系列方法来操作ES。

代码语言:java
复制
 @Autowired
    private ElasticsearchRestTemplate elasticsearchRestTemplate;
   
   // 根据id查询一条文档
   public Person getPersonById(int id) {
        return elasticsearchRestTemplate.queryForObject(GetQuery.getById(String.valueOf(id)), Person.class);
    }
     
    // 新增一条文档
    public String createPerson(Person person) {
        IndexQuery indexQuery = new IndexQueryBuilder()
                .withId(String.valueOf(person.getId()))
                .withObject(person)
                .build();
        String documentId = elasticsearchRestTemplate.index(indexQuery);
        return documentId;
    }

更多详细配置信息可参考spring-data-elasticsearch的API官方文档

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、添加maven依赖包:
  • 2、配置ElasticsearchRestTemplate
  • 3、注入ElasticsearchRestTemplate
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档