学无先后,达者为师

网站首页 编程语言 正文

Springboot整合Elasticsearch及相关API

作者:Y4Snail 更新时间: 2022-08-15 编程语言

文章目录

  • Springboot整合Elasticsearch
    • 自定义配置类引入es高级客户端
  • 索引操作API
  • 文档操作API

Springboot整合Elasticsearch

Springboot整合Elasticsearch只需要引入完成以下两步操作

  • 引入依赖:spring-boot-starter-data-elasticsearch
  • 在属性中修改<elasticsearch.version>标签,将版本改为与elasticsearch服务器相同的版本即可
  • 自定义配置类引入es高级客户端

自定义配置类引入es高级客户端

@Configuration
public class ElasticSearchClientConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient() {
        RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")));
        return client;
    }

}

索引操作API

@SpringBootTest
class EsIndexTests {

    @Autowired
    private RestHighLevelClient restHighLevelClient;

    /**
     * 1、es测试创建索引
     * */
    @Test
    void testCreateIndex() throws Exception {
        // 1.创建索引请求
        CreateIndexRequest request = new CreateIndexRequest("yang_index");
        // 2.客户端执行请求
        CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
        System.out.println(createIndexResponse);
    }

    /**
     * 2、es测试获取索引
     * */
    @Test
    void testExistIndex() throws Exception {
        // 1.获取索引请求
        GetIndexRequest request = new GetIndexRequest("yang_index");
        // 2.客户端执行请求
        boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

    /**
     * 3、es测试删除索引
     * */
    @Test
    void testDeleteIndex() throws Exception {
        DeleteIndexRequest request = new DeleteIndexRequest("yang_index");
        AcknowledgedResponse response = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
        System.out.println(response.isAcknowledged());
    }

}

文档操作API

@SpringBootTest
public class EsDocumentTests {

    @Autowired
    private RestHighLevelClient restHighLevelClient;

    /**
     * 1、es测试添加文档
     * */
    @Test
    void testAddDocument() throws Exception {
        User user = new User("yang", 15);
        IndexRequest request = new IndexRequest("yang_index");
        request.id("2");
        request.timeout(TimeValue.timeValueSeconds(1));
        request.source(JSON.toJSONString(user), XContentType.JSON);
        IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);
        System.out.println(response.status());
    }

    /**
     * 2、es测试批量添加文档
     * */
    @Test
    void testAddBatchDocument() throws Exception {
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout(TimeValue.timeValueSeconds(10));

        ArrayList<User> users = new ArrayList<>();
        users.add(new User("yang1", 21));
        users.add(new User("yang2", 22));
        users.add(new User("yang3", 23));
        users.add(new User("yang4", 24));
        users.add(new User("yang5", 25));

        for (int i = 0; i < users.size(); i++) {
            bulkRequest.add(
                    new IndexRequest("yang_index")
                    .id("" + (i+1))
                    .source(JSON.toJSONString(users.get(i)), XContentType.JSON)
            );
        }
        BulkResponse response = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
        System.out.println(response.hasFailures());
    }

    /**
     * 3、es测试文档是否存在
     * */
    @Test
    void testDocumentIsExists() throws Exception {
        GetRequest getRequest = new GetRequest("yang_index", "1");
        boolean exists = restHighLevelClient.exists(getRequest, RequestOptions.DEFAULT);
        System.out.println(exists);
    }

    /**
     * 4、es测试获取文档信息
     * */
    @Test
    void testGetDocument() throws Exception {
        GetRequest getRequest = new GetRequest("yang_index", "1");
        GetResponse document = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
        String source = document.getSourceAsString();
        System.out.println(source);
    }

    /**
     * 5、es测试更新文档信息
     * */
    @Test
    void testUpdateDocument() throws Exception {
        UpdateRequest updateRequest = new UpdateRequest("yang_index", "1");
        updateRequest.timeout(TimeValue.timeValueSeconds(1));
        User user = new User();
        user.setName("yang_111");
        updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);
        UpdateResponse response = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
        System.out.println(response.status());
    }

    /**
     * 6、es测试删除文档
     * */
    @Test
    void testDeleteDocument() throws Exception {
        DeleteRequest request = new DeleteRequest("yang_index","1");
        request.timeout(TimeValue.timeValueSeconds(1));
        DeleteResponse response = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
        System.out.println(response.status());
    }

    /**
     * 7、es测试查询文档
     *      SearchRequest           搜索请求
     *      SearchSourceBuilder     条件构造
     *      HighlightBuilder        构建高亮
     *      TermQueryBuilder        精确查询
     *      xxxQueryBuilder         表示对应的命令
     * */
    @Test
    void testQueryDocument() throws Exception {
        SearchRequest searchRequest = new SearchRequest("yang_index");
        //构建搜索条件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        //查询条件
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "yang");
        //组合
        sourceBuilder.query(termQueryBuilder)
                .timeout(TimeValue.timeValueSeconds(100));
        //封装进searchRequest中
        searchRequest.source(sourceBuilder);
        //通过客户端发送并得到响应
        SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        for (SearchHit hit : response.getHits()) {
            System.out.println(hit.getSourceAsString());
        }
    }
}

原文链接:https://blog.csdn.net/koutaoran4812/article/details/126336755

栏目分类
最近更新