diff --git a/novel-book/book-service/pom.xml b/novel-book/book-service/pom.xml index 05227d6..e41153e 100644 --- a/novel-book/book-service/pom.xml +++ b/novel-book/book-service/pom.xml @@ -35,7 +35,6 @@ org.redisson redisson-spring-boot-starter - ${redisson.version} @@ -44,13 +43,11 @@ io.shardingsphere sharding-jdbc-spring-boot-starter - ${sharding.jdbc.version} io.shardingsphere sharding-jdbc-spring-namespace - ${sharding.jdbc.version} diff --git a/novel-search/pom.xml b/novel-search/pom.xml index 34fd016..b761373 100644 --- a/novel-search/pom.xml +++ b/novel-search/pom.xml @@ -27,10 +27,13 @@ spring-cloud-netflix-hystrix + + org.elasticsearch.client + elasticsearch-rest-high-level-client + io.searchbox jest - ${jest.version} @@ -42,7 +45,6 @@ org.redisson redisson-spring-boot-starter - ${redisson.version} diff --git a/novel-search/src/main/java/com/java2nb/novel/SearchApplication.java b/novel-search/src/main/java/com/java2nb/novel/SearchApplication.java index e45f638..559a533 100644 --- a/novel-search/src/main/java/com/java2nb/novel/SearchApplication.java +++ b/novel-search/src/main/java/com/java2nb/novel/SearchApplication.java @@ -2,6 +2,7 @@ package com.java2nb.novel; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.scheduling.annotation.EnableScheduling; @@ -14,6 +15,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableFeignClients @EnableScheduling +@ServletComponentScan public class SearchApplication { public static void main(String[] args) { diff --git a/novel-search/src/main/java/com/java2nb/novel/search/config/EsConfig.java b/novel-search/src/main/java/com/java2nb/novel/search/config/EsConfig.java new file mode 100644 index 0000000..50af93e --- /dev/null +++ b/novel-search/src/main/java/com/java2nb/novel/search/config/EsConfig.java @@ -0,0 +1,40 @@ +package com.java2nb.novel.search.config; + + +import org.apache.http.HttpHost; +import org.elasticsearch.client.RestClient; +import org.elasticsearch.client.RestHighLevelClient; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * elasticsearch搜索引擎配置 + * @author xiongxiaoyang + */ +@Configuration +public class EsConfig { + + @Value("${spring.elasticsearch.jest.uris}") + private String esUris; + + @Bean + public RestHighLevelClient esClient(){ + + + String[] uris = esUris.split(","); + HttpHost[] hosts = new HttpHost[uris.length]; + for(int i = 0 ; i < uris.length ; i++){ + String uri = uris[i]; + String scheme = uri.substring(0,uri.indexOf(":")).trim(); + String hostname = uri.substring(uri.indexOf("://")+3,uri.lastIndexOf(":")).trim(); + Integer port = Integer.parseInt(uri.substring(uri.lastIndexOf(":")+1).trim()); + hosts[i] = new HttpHost(hostname,port,scheme); + } + + return new RestHighLevelClient( + RestClient.builder(hosts)); + + } +} diff --git a/novel-search/src/main/java/com/java2nb/novel/search/service/impl/SearchServiceImpl.java b/novel-search/src/main/java/com/java2nb/novel/search/service/impl/SearchServiceImpl.java index 6d13ca5..35b6782 100644 --- a/novel-search/src/main/java/com/java2nb/novel/search/service/impl/SearchServiceImpl.java +++ b/novel-search/src/main/java/com/java2nb/novel/search/service/impl/SearchServiceImpl.java @@ -17,6 +17,11 @@ import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.elasticsearch.action.index.IndexRequest; +import org.elasticsearch.action.index.IndexResponse; +import org.elasticsearch.client.RequestOptions; +import org.elasticsearch.client.RestHighLevelClient; +import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.builder.SearchSourceBuilder; @@ -42,12 +47,12 @@ import java.util.Map; @Slf4j public class SearchServiceImpl implements SearchService { - private final String INDEX = "novel"; - - private final String TYPE = "book"; - private final JestClient jestClient; + private final RestHighLevelClient restHighLevelClient; + + private final String INDEX = "novel"; + @SneakyThrows @Override @@ -57,9 +62,13 @@ public class SearchServiceImpl implements SearchService { EsBookVO esBookVO = new EsBookVO(); BeanUtils.copyProperties(book, esBookVO, "lastIndexUpdateTime"); esBookVO.setLastIndexUpdateTime(new SimpleDateFormat("yyyy/MM/dd HH:mm").format(book.getLastIndexUpdateTime())); - Index action = new Index.Builder(esBookVO).index(INDEX).type(TYPE).id(book.getId().toString()).build(); - jestClient.execute(action); + IndexRequest request = new IndexRequest(INDEX); + request.id(book.getId()+""); + request.source(new ObjectMapper().writeValueAsString(esBookVO), XContentType.JSON); + IndexResponse index = restHighLevelClient.index(request, RequestOptions.DEFAULT); + + log.debug(index.getResult().toString()); } @@ -115,7 +124,7 @@ public class SearchServiceImpl implements SearchService { searchSourceBuilder.query(boolQueryBuilder); - Count count = new Count.Builder().addIndex(INDEX).addType(TYPE) + Count count = new Count.Builder().addIndex(INDEX) .query(searchSourceBuilder.toString()).build(); CountResult results = jestClient.execute(count); Double total = results.getCount(); @@ -143,7 +152,7 @@ public class SearchServiceImpl implements SearchService { searchSourceBuilder.size(pageSize); // 构建Search对象 - Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(INDEX).addType(TYPE).build(); + Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex(INDEX).build(); log.debug(search.toString()); SearchResult result; result = jestClient.execute(search); diff --git a/pom.xml b/pom.xml index e41f812..8b42bac 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ 1.0.2 3.4 0.10.6 - 6.2.2 + 7.9.3 6.3.1 1.4.1.RELEASE 3.12.5 @@ -191,6 +191,11 @@ spring-boot-starter-redis ${redis.version} + + org.redisson + redisson-spring-boot-starter + ${redisson.version} + @@ -274,6 +279,18 @@ true + + + org.elasticsearch.client + elasticsearch-rest-high-level-client + ${elasticsearch.version} + + + io.searchbox + jest + ${jest.version} + + net.logstash.logback