EsConfig.java package com.wd.tools.estools.config;import org.elasticsearch.client.transport.TransportClient;import org.elasticsearch.common.settings.Settings;import org.elasticsearch.common.transport.InetSocketTransportAddress;import org.el
package com.wd.tools.estools.config; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.transport.client.PreBuiltTransportClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import java.net.InetAddress; import java.net.UnknownHostException; /** * Created by DimonHo on 2017/10/30. */ @Component @Configuration public class EsConfig implements FactoryBean , InitializingBean, DisposableBean { private static final Logger logger = LoggerFactory.getLogger(EsConfig.class); @Value("${spring.data.elasticsearch.cluster-nodes}") private String clusterNodes ; @Value("${spring.data.elasticsearch.cluster-name}") private String clusterName; private TransportClient client; @Override public void destroy() throws Exception { try { logger.info("Closing elasticSearch client"); if (client != null) { client.close(); } } catch (final Exception e) { logger.error("Error closing ElasticSearch client: ", e); } } @Override public TransportClient getObject() throws Exception { return client; } @Override public Class getObjectType() { return TransportClient.class; } @Override public boolean isSingleton() { return false; } @Override public void afterPropertiesSet() throws Exception { buildClient(); } protected void buildClient() { try { PreBuiltTransportClient preBuiltTransportClient = new PreBuiltTransportClient(settings()); if (!"".equals(clusterNodes)){ for (String nodes:clusterNodes.split(",")) { String InetSocket [] = nodes.split(":"); String Address = InetSocket[0]; Integer port = Integer.valueOf(InetSocket[1]); preBuiltTransportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(Address),port )); } client = preBuiltTransportClient; } } catch (UnknownHostException e) { logger.error(e.getMessage()); } } /** * 初始化默认的client */ private Settings settings(){ Settings settings = Settings.builder() .put("cluster.name",clusterName) .put("client.transport.sniff",true) .build(); client = new PreBuiltTransportClient(settings); return settings; } }QueryService.java
package com.wd.tools.estools.service; import org.apache.http.HttpEntity; import org.apache.http.entity.ContentType; import org.apache.http.nio.entity.NStringEntity; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Response; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.index.query.QueryBuilders; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.IOException; import java.util.Collections; /** * Created by DimonHo on 2017/10/30. */ @Service public class QueryService { @Autowired private TransportClient client; @Autowired private RestClient restClient; public SearchResponse getAllData(){ SearchResponse response = client.prepareSearch("journal_navication5.0").setTypes("titles").setQuery(QueryBuilders.matchAllQuery()).get(); return response; } public Response getAllDataForRestClient(){ String url = "/journal_navication5.0/titles/_search"; HttpEntity params = new NStringEntity("{\"query\":{\"match_all\":{}}}", ContentType.APPLICATION_JSON); try { return restClient.performRequest("GET", url, Collections.application.ymlemptyMap(), params); } catch (IOException e) { e.printStackTrace(); return null; } } }
spring: data: elasticsearch: cluster-nodes: 192.168.1.75:9300,192.168.1.76:9300,192.168.1.77:9300,192.168.1.78:9300 cluster-name: wdkj_test elasticsearch: rest: client: cluster-nodes: 192.168.1.75:9200,192.168.1.76:9200,192.168.1.77:9200,192.168.1.78:9200QueryController.java
package com.wd.tools.estools.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.wd.tools.estools.service.QueryService; import org.apache.http.util.EntityUtils; import org.elasticsearch.search.SearchHit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.io.IOException; /** * Created by DimonHo on 2017/10/30. */ @RestController public class QueryController { @Autowired QueryService queryService; @GetMapping("/findAll") public String findAll() throws IOException { return queryService.getAllData().toString(); } @GetMapping("/getAllDataForRestClient") public JSONObject getAllDataForRestClient() throws IOException { JSONObject jsonObject = JSON.parseObject(EntityUtils.toString(queryService.getAllDataForRestClient().getEntity(),"utf-8")); return jsonObject; } }RestEsConfig.java
package com.wd.tools.estools.config; import org.apache.http.HttpHost; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.transport.client.PreBuiltTransportClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import java.net.InetAddress; import java.net.UnknownHostException; /** * Created by DimonHo on 2017/10/30. */ @Component @Configuration @ConfigurationProperties(prefix = "elasticsearch.rest.client") public class RestEsConfig { private static final Logger logger = LoggerFactory.getLogger(RestEsConfig.class); private String clusterNodes ; private RestClient restClient; public String getClusterNodes() { return clusterNodes; } public void setClusterNodes(String clusterNodes) { this.clusterNodes = clusterNodes; } public void destroy() throws Exception { try { logger.info("Closing elasticSearch client"); if (restClient != null) { restClient.close(); } } catch (final Exception e) { logger.error("连接关闭失败{}",e); } } @Bean public RestClient creatClient() throws Exception { return buildClient(); } protected RestClient buildClient() { if (!"".equals(clusterNodes)) { String[] nodes = clusterNodes.split(","); HttpHost[] httpHosts = new HttpHost[nodes.length]; for (int i = 0; i < nodes.length; i++) { String InetSocket[] = nodes[i].split(":"); String Address = InetSocket[0]; Integer port = Integer.valueOf(InetSocket[1]); httpHosts[i] = new HttpHost(Address, port, "http"); } restClient = RestClient.builder(httpHosts).build(); } return restClient; } }pom.xml
4.0.0 com.wd.tools es-tools0.0.1-SNAPSHOT jar es-tools Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent1.5.8.RELEASE 2.9.1 2.9.1 5.5.1 UTF-8 UTF-8 1.8 org.apache.logging.log4j log4j-api${log4j-api.version} org.apache.logging.log4j log4j-core${log4j-core.version} org.elasticsearch elasticsearch${elasticsearch.version} org.elasticsearch.client transport${elasticsearch.version} org.elasticsearch.client rest${elasticsearch.version} com.alibaba fastjson1.1.41 org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-testtest org.springframework.boot spring-boot-configuration-processortrue org.springframework.boot spring-boot-maven-plugin