SpringBoot集成ES之ElasticsearchRestTemplate

2 篇文章 0 订阅

之前写的那边那篇SpringBoot集成ES,现在已经不推荐使用的。

建议使用RestHighLevelClient也是官网推荐的。

简单操作使用ElasticsearchRestTemplate就好了,它只是SpringRestHighLevelClient进行了封装

pom.xml

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>

yml:

spring:
  elasticsearch:
    rest:
      uris: http://192.168.1.235:9200
      username: admin
      password: admin

实体:

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

@Data
@Document(indexName = "test_user", shards = 3, replicas = 2)
public class TestUser {

    @Id
    @Field(type = FieldType.Keyword)
    private String id;

    @Field(type = FieldType.Keyword)
    private String name;

    @Field(type = FieldType.Integer)
    private Integer age;

    @Field(type = FieldType.Keyword)
    private String sex;

    @Field(type = FieldType.Keyword)
    private String phone;

}

 

实现简单的操作:

import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.SearchHits;
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
import org.springframework.data.elasticsearch.core.query.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.HashMap;

@RestController
public class TestUserController {

    @Resource
    private ElasticsearchRestTemplate elasticsearchRestTemplate;

    /**
     * 保存覆盖数据
     *
     * @return
     */
    @GetMapping("/save")
    public Object save() {
        TestUser testUser = new TestUser();
        testUser.setId("1");
        testUser.setName("张三");
        testUser.setAge(18);
        testUser.setSex("男");
        testUser.setPhone("15812341234");

        //indexName默认取@Document中的indexName
        elasticsearchRestTemplate.save(testUser);

        //indexName动态指定--索引如果不存在save会自动创建后在存入数据
        elasticsearchRestTemplate.save(testUser, IndexCoordinates.of("test_user_info"));

        elasticsearchRestTemplate.save(testUser, IndexCoordinates.of("test_user_info_dd"));

        return "ok";
    }


    /**
     * 查询
     *
     * @return
     */
    @GetMapping("/search")
    public Object search() {
        BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
        NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
        builder.withQuery(queryBuilder);
        NativeSearchQuery build = builder.build();

        SearchHits<TestUser> test_user = elasticsearchRestTemplate.search(build, TestUser.class);

        //indexName动态指定
        SearchHits<TestUser> test_user_info = elasticsearchRestTemplate.search(build, TestUser.class, IndexCoordinates.of("test_user_info"));

        HashMap<Object, Object> objectObjectHashMap = new HashMap<>();
        objectObjectHashMap.put("test_user", test_user.getSearchHits());
        objectObjectHashMap.put("test_user_info", test_user_info.getSearchHits());
        return objectObjectHashMap;
    }


    /**
     * 删除
     *
     * @return
     */
    @GetMapping("/delete")
    public Object delete() {
        //根据ID删除-indexName默认取@Document中的indexName
        elasticsearchRestTemplate.delete("1", TestUser.class);

        //根据ID删除-indexName动态指定
        elasticsearchRestTemplate.delete("1", IndexCoordinates.of("test_user_info"));

        //自定义条件、自定义索引
//        BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
//        queryBuilder.filter(QueryBuilders.matchQuery("name", "张三"));
//        NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
//        builder.withQuery(queryBuilder);
//        NativeSearchQuery build = builder.build();
//        elasticsearchRestTemplate.delete(build, TestUser.class, IndexCoordinates.of("test_user_info"));

        return "ok";
    }
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值