第一步:添加依赖
<!--elasticsearch-->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.14</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.6.14</version>
</dependency>
<!--导入Jest依赖-->
<dependency>
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
<version>6.3.1</version>
</dependency>
第二步:配置ES集群地址(我这里使用yml文件)
spring:
application:
name: tools
elasticsearch:
sqlurl: http://11.11.111.11:9296
#es集群名称
clustername: es-5.6.14
#tcp通讯端口9396
transport: 9396
#集群节点jest配置,默认9200端口
jest:
uris:
http://11.11.111.11:9296,
http://11.11.111.11:9296,
......................#集群的话在这里配置节点,可以多个,可以单个
http://11.11.111.11:9296,
multiThreaded: true
read-timeout: 20000
ES默认http端口为9200,tcp端口为9300,我这里搭建ES时将http端口改为9296,tcp端口改为9396,根据实际情况修改对应的配置项
第三步:配置JestClient
public class JestClientConfig {
private JestClient client;
@Value("${spring.elasticsearch.jest.uris}")
private String jestUri;
@Bean("jestClient")
public JestClient getJc(){
try {
List<String> uris = new ArrayList<String>();
String[] aips = jestUri.split(",");
for (String aip : aips) {
uris.add(aip.trim());
}
JestClientFactory factory = new JestClientFactory();
factory.setHttpClientConfig(new HttpClientConfig
.Builder(uris)
.multiThreaded(true)
.defaultMaxTotalConnectionPerRoute(2)
.maxTotalConnection(20)
.build());
client = factory.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return client;
}
}
第四步:使用JestClient查询ElasticSearch
在controller中添加接口查询ElasticSearch
@GetMapping("/es")
@ApiOperation("ES整合测试")
@ApiImplicitParams({
@ApiImplicitParam(name = "indexName",value = "index名称",defaultValue = "ceshi1",required = true),
@ApiImplicitParam(name = "typeName",value = "type名称",defaultValue = "data",required = true),
@ApiImplicitParam(name = "fieldName",value = "查询字段名称",defaultValue = "_id",required = true),
@ApiImplicitParam(name = "fieldValue",value = "查询字段值",defaultValue = "2a6f6ef3-8bc5-4b14-b3b6-ed4252a601e8",required = true)
})
public Map<String,Object> getES(String indexName,String typeName,String fieldName,String fieldValue){
Map<String,Object> result = new HashMap<>();
try {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.termQuery(fieldName,fieldValue));
Search search =new Search.Builder(searchSourceBuilder.toString()).addIndex(indexName).addType(typeName).build();
System.out.println(search.toString());
JestResult jestResult = jestClient.execute(search);
System.out.println(jestResult.toString());
result.put("result",jestResult.toString());
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
执行后调用接口可以查询到结果,如下图:
到这里springboot整合ElasticSearch就已经结束了,后续再深入学习RestClient,SearchSourceBuilder和Search的使用。