同福

Java使用RestHighLevelClient操作Elasticsearch搜索引擎数据库【20210617】

介绍

介绍

福哥需要用Java操作Elasticsearch搜索引擎,经过了一番折腾终于搞定了。现在福哥整理了用Java操作Elasticsearch的方法,分享给大家。有需要的童鞋可以参考一下!

在Java里面操作Elasticsearch搜索引擎是通过官方的elasticsearch库实现的,上一课福哥用RestClient方式实现了ES的连接和基本操作。

福哥从网上查看各种教程发现大家更加喜欢用RestHighLevelClient这个对像,对比之后发现LowLevel的客户端虽然更加自由、支持版本更全,但是它编写代码不是很友好。所以福哥今天再把HighLevel的客户端的使用方法整理出来教给大家~~

安装

pom.xml

首先我们在pom.xml里面安装依赖库elasticsearch。

<!-- elasticsearch -->
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.13.0</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.13.0</version>
</dependency>

application.properties

设置ES参数

##############################################################################
# elasticsearch
##############################################################################

nosql.elasticsearch.host=192.168.2.168
nosql.elasticsearch.port=9200
nosql.elasticsearch.scheme=http

使用

Bean

首先我们需要自己创建Bean来给RestHighLevelClient使用,因为Spring boot不管这事儿。

@Bean
public RestHighLevelClient ESHighLevelClient(
        @Value("${nosql.elasticsearch.host}") String hostName,
        @Value("${nosql.elasticsearch.port}") int port,
        @Value("${nosql.elasticsearch.scheme}") String scheme
){

    return new RestHighLevelClient(
            RestClient.builder(
                    new HttpHost(hostName, port, scheme)
            )
    );
}

测试

现在我们在控制器里面使用@Resource注解初始化RestHighLevelClient对象,然后使用它去操作ES搜索引擎。
因为RestHighLevelClient是通过标准的HTTP方式操作ES,所以福哥就只提供两个示例,大家可以举一反三。

@Resource
RestHighLevelClient restHighLevelClient;

就一句话,就可以得到RestHighLevelClient对象的实例了。

索引列表

这个RestHighLevelClient和PHP的elasticsearch-php库一样,没有一个方法可以得到索引列表。

创建索引

indices().create

创建索引通过indices().create实现的,成功了就返回真,失败了会抛出异常。

CreateIndexRequest request;
RequestOptions options;
CreateIndexResponse response;

try {
    request = new CreateIndexRequest("test");
    options = RequestOptions.DEFAULT;
    response = restHighLevelClient.indices().create(request, options);
    if (response.isAcknowledged()) {
        out += "success";
    } else {
        out += response.toString();
    }
}
catch (Exception e){
    out += e.getMessage();
}

home/topic/2021/0617/10/8832dd1f71add8e20df396ead276e305.png

总结

福哥今天给大家讲解了Java使用RestHighLevelClient操作Elasticsearch的方法,今后福哥会整理完成它,敬请期待吧~~