SpringBoot下使用Jest访问ES数据库以及访问ES集群

很多时候一个项目不仅会使用到关系型数据库(Mysql等),也可能会使用到非关系型数据库,在这之中ElasticSearch就是一个佼佼者。而使用RestAPI的方式去访问ElasticSearch无疑是一个很可以的方法。

当然成功的访问到ES数据库需要做到一下几步。

一、在项目里添加相关的依赖

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

另外还有Jest的相关依赖:

		<dependency>
			<groupId>io.searchbox</groupId>
			<artifactId>jest</artifactId>
		</dependency>

二、对Jest进行配置

		spring:
		    elasticsearch:
				jest:
				connection-timeout: 3000
				multi-threaded: true
				uris: http://xxx.xx.xxx.xxx:9200
				read-timeout: 7200

访问地址便是服务器地址,端口默认是9200(不排除进行了修改),其它的相关属性也可根据自身需要自行设置。

三、访问ES数据库

    public JsonObject searchInformation(String id) {
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.matchQuery("xxxxx",id));
        Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(index_name).addType(type_name).build();
        JestResult jestResult = jestClient.execute(search);
        return  jestResult.getJsonObject();
    }

此处的index_name和type_name需要根据自身情况进行设置。

需要注意的事情是,此处的结果JsonObject是gson的格式,所以可能还需要添加gson的依赖:

		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.5</version>
		</dependency>

拿到了Json之后自然是想怎么使用就怎么使用了。

四、集群访问的方法

其实到上一步的时候所有的操作就已经结束了,程序已经可以正常的访问ES数据库并且拿到相关的数据。但是很多时候ES肯定不止一台服务器,一般都是集群搭建。那么这样的情况下又该如何操作呢?

其实以上的配置完全就可以访问集群的ES数据库,只需要改一下配置文件就可以轻松的实现既修改第二步的操作:

		spring:
		    elasticsearch:
				jest:
				connection-timeout: 3000
				multi-threaded: true
				uris:
				- http://xxx.xx.xxx.xxx:9200
				- http://yyy.xx.xxx.xxx:9200
				read-timeout: 7200

有多少就加多少URI进去,集群访问也十分便捷。整体的实现也是相当的简单。

猜你喜欢

转载自blog.csdn.net/z327092292/article/details/84024926