From e67a772515c0b84d1c015ac1c85348a40b93294c Mon Sep 17 00:00:00 2001 From: "Yangkai.Shen" <237497819@qq.com> Date: Tue, 17 Sep 2019 17:29:46 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20spring-boot-demo-elasticsearch-res?= =?UTF-8?q?t-high-level-client=20=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md | 68 +++++++++++------- .../pom.xml | 11 ++- .../{model => common}/Result.java | 2 +- .../{model => common}/ResultCode.java | 2 +- .../ElasticsearchAutoConfiguration.java | 25 +++---- .../ElasticsearchProperties.java | 8 ++- .../exception/ElasticsearchException.java | 2 +- .../{ => base}/BaseElasticsearchService.java | 47 ++++++------- .../service/impl/PersonServiceImpl.java | 3 +- .../elasticsearch/util/BeanUtils.java | 49 ------------- .../xkcoding/elasticsearch/util/MapUtils.java | 70 ------------------- .../main/resources/META-INF/spring.factories | 3 - .../ElasticsearchApplicationTests.java | 24 +++++-- 13 files changed, 117 insertions(+), 197 deletions(-) rename spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/{model => common}/Result.java (97%) rename spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/{model => common}/ResultCode.java (91%) rename spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/{autoconfigure => config}/ElasticsearchAutoConfiguration.java (84%) rename spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/{autoconfigure => config}/ElasticsearchProperties.java (94%) rename spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/{ => base}/BaseElasticsearchService.java (81%) delete mode 100644 spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/util/BeanUtils.java delete mode 100644 spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/util/MapUtils.java delete mode 100644 spring-boot-demo-elasticsearch-rest-high-level-client/src/main/resources/META-INF/spring.factories diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/README.md b/spring-boot-demo-elasticsearch-rest-high-level-client/README.md index f8dd2a4..6105afe 100644 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/README.md +++ b/spring-boot-demo-elasticsearch-rest-high-level-client/README.md @@ -1,8 +1,8 @@ # spring-boot-demo-elasticsearch-rest-high-level-client -> 此 demo 主要演示了 Spring Boot 如何集成 `elasticsearch-rest-high-level-client` 完成对 ElasticSearch 的基本CURD 操作 +> 此 demo 主要演示了 Spring Boot 如何集成 `elasticsearch-rest-high-level-client` 完成对 `ElasticSearch 7.x` 版本的基本 CURD 操作 -## elasticsearch 升级 +## Elasticsearch 升级 先升级到 6.8,索引创建,设置 mapping 等操作加参数:include_type_name=true,然后滚动升级到 7,旧索引可以用 type 访问。具体可以参考: @@ -12,17 +12,18 @@ https://www.elastic.co/guide/en/elasticsearch/reference/7.0/removal-of-types.htm ## 注意 -作者编写本demo时,ElasticSearch版本为 `7.3.0`,使用 docker 运行,下面是所有步骤: +作者编写本 demo 时,ElasticSearch 版本为 `7.3.0`,使用 docker 运行,下面是所有步骤: -1. 下载镜像:`docker pull elasticsearch:7.3.0` +1.下载镜像:`docker pull elasticsearch:7.3.0` -2. 下载安装 `docker-compose` -``` +2.下载安装 `docker-compose`,参考文档: https://docs.docker.com/compose/install/ + +```bash sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -参考文档: https://docs.docker.com/compose/install/ ``` -2. 编写docker-compose 文件 +3.编写docker-compose 文件 + ```yaml version: "3" @@ -47,8 +48,7 @@ services: max-size: "50m" ``` -3. 启动: `docker-compose -f elasticsearch.yaml up -d` - +4.启动: `docker-compose -f elasticsearch.yaml up -d` ## pom.xml @@ -108,7 +108,6 @@ services: cn.hutool hutool-all - 4.6.6 @@ -151,8 +150,17 @@ services: - + + spring-boot-demo-elasticsearch-rest-high-level-client + + + org.springframework.boot + spring-boot-maven-plugin + + + + ``` ## Person.java @@ -217,7 +225,6 @@ public class Person implements Serializable { private String remark; } - ``` ## PersonService.java @@ -291,7 +298,6 @@ public interface PersonService { List searchList(String index); } - ``` ## PersonServiceImpl.java @@ -303,7 +309,7 @@ package com.xkcoding.elasticsearch.service.impl; import cn.hutool.core.bean.BeanUtil; import com.xkcoding.elasticsearch.model.Person; -import com.xkcoding.elasticsearch.service.BaseElasticsearchService; +import com.xkcoding.elasticsearch.service.base.BaseElasticsearchService; import com.xkcoding.elasticsearch.service.PersonService; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.search.SearchResponse; @@ -327,7 +333,6 @@ import java.util.Map; @Service public class PersonServiceImpl extends BaseElasticsearchService implements PersonService { - @Override public void createIndex(String index) { createIndexRequest(index); @@ -390,7 +395,6 @@ public class PersonServiceImpl extends BaseElasticsearchService implements Perso return personList; } } - ``` @@ -406,10 +410,10 @@ import com.xkcoding.elasticsearch.model.Person; import com.xkcoding.elasticsearch.service.PersonService; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -418,22 +422,30 @@ import java.util.List; @SpringBootTest public class ElasticsearchApplicationTests { - @Resource + @Autowired private PersonService personService; + /** + * 测试删除索引 + */ @Test public void deleteIndexTest() { personService.deleteIndex(ElasticsearchConstant.INDEX_NAME); } + /** + * 测试创建索引 + */ @Test public void createIndexTest() { personService.createIndex(ElasticsearchConstant.INDEX_NAME); } + /** + * 测试新增 + */ @Test public void insertTest() { - List list = new ArrayList<>(); list.add(Person.builder().age(11).birthday(new Date()).country("CN").id(1L).name("哈哈").remark("test1").build()); list.add(Person.builder().age(22).birthday(new Date()).country("US").id(2L).name("hiahia").remark("test2").build()); @@ -442,6 +454,9 @@ public class ElasticsearchApplicationTests { personService.insert(ElasticsearchConstant.INDEX_NAME, list); } + /** + * 测试更新 + */ @Test public void updateTest() { Person person = Person.builder().age(33).birthday(new Date()).country("ID_update").id(3L).name("呵呵update").remark("test3_update").build(); @@ -450,24 +465,29 @@ public class ElasticsearchApplicationTests { personService.update(ElasticsearchConstant.INDEX_NAME, list); } + /** + * 测试删除 + */ @Test public void deleteTest() { personService.delete(ElasticsearchConstant.INDEX_NAME, Person.builder().id(1L).build()); } + /** + * 测试查询 + */ @Test public void searchListTest() { List personList = personService.searchList(ElasticsearchConstant.INDEX_NAME); System.out.println(personList); } - } - ``` ## 参考 -1. ElasticSearch 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html -2. Java High Level REST Client:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.3/java-rest-high.html +- ElasticSearch 官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html + +- Java High Level REST Client:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.3/java-rest-high.html diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/pom.xml b/spring-boot-demo-elasticsearch-rest-high-level-client/pom.xml index 7a4a9d4..2f85b90 100644 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/pom.xml +++ b/spring-boot-demo-elasticsearch-rest-high-level-client/pom.xml @@ -53,7 +53,6 @@ cn.hutool hutool-all - 4.6.6 @@ -96,4 +95,14 @@ + + spring-boot-demo-elasticsearch-rest-high-level-client + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/model/Result.java b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/common/Result.java similarity index 97% rename from spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/model/Result.java rename to spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/common/Result.java index 730b774..2ae2af9 100644 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/model/Result.java +++ b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/common/Result.java @@ -1,4 +1,4 @@ -package com.xkcoding.elasticsearch.model; +package com.xkcoding.elasticsearch.common; import lombok.Data; import org.springframework.lang.Nullable; diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/model/ResultCode.java b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/common/ResultCode.java similarity index 91% rename from spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/model/ResultCode.java rename to spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/common/ResultCode.java index 7958241..9f56137 100644 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/model/ResultCode.java +++ b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/common/ResultCode.java @@ -1,4 +1,4 @@ -package com.xkcoding.elasticsearch.model; +package com.xkcoding.elasticsearch.common; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/autoconfigure/ElasticsearchAutoConfiguration.java b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/config/ElasticsearchAutoConfiguration.java similarity index 84% rename from spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/autoconfigure/ElasticsearchAutoConfiguration.java rename to spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/config/ElasticsearchAutoConfiguration.java index a64349d..ea1877a 100644 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/autoconfigure/ElasticsearchAutoConfiguration.java +++ b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/config/ElasticsearchAutoConfiguration.java @@ -1,5 +1,6 @@ -package com.xkcoding.elasticsearch.autoconfigure; +package com.xkcoding.elasticsearch.config; +import lombok.RequiredArgsConstructor; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; @@ -8,14 +9,14 @@ import org.apache.http.impl.client.BasicCredentialsProvider; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.client.RestHighLevelClient; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.util.Assert; import org.springframework.util.StringUtils; -import javax.annotation.Resource; -import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.List; @@ -26,13 +27,12 @@ import java.util.List; * @version v1.0 * @since 2019/9/15 22:59 */ +@Configuration +@RequiredArgsConstructor(onConstructor_ = @Autowired) @EnableConfigurationProperties(ElasticsearchProperties.class) public class ElasticsearchAutoConfiguration { - @SuppressWarnings("NullableProblems") - @NotNull - @Resource - private ElasticsearchProperties elasticsearchProperties; + private final ElasticsearchProperties elasticsearchProperties; private List httpHosts = new ArrayList<>(); @@ -48,8 +48,7 @@ public class ElasticsearchAutoConfiguration { Assert.state(parts.length == 2, "Must be defined as 'host:port'"); httpHosts.add(new HttpHost(parts[0], Integer.parseInt(parts[1]), elasticsearchProperties.getSchema())); } catch (Exception e) { - throw new IllegalStateException( - "Invalid ES nodes " + "property '" + node + "'", e); + throw new IllegalStateException("Invalid ES nodes " + "property '" + node + "'", e); } }); RestClientBuilder builder = RestClient.builder(httpHosts.toArray(new HttpHost[0])); @@ -61,10 +60,10 @@ public class ElasticsearchAutoConfiguration { /** * get restHistLevelClient * - * @author fxbin - * @param builder RestClientBuilder + * @param builder RestClientBuilder * @param elasticsearchProperties elasticsearch default properties * @return {@link org.elasticsearch.client.RestHighLevelClient} + * @author fxbin */ private static RestHighLevelClient getRestHighLevelClient(RestClientBuilder builder, ElasticsearchProperties elasticsearchProperties) { @@ -88,11 +87,9 @@ public class ElasticsearchAutoConfiguration { if (!StringUtils.isEmpty(account.getUsername()) && !StringUtils.isEmpty(account.getUsername())) { final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); - credentialsProvider.setCredentials(AuthScope.ANY, - new UsernamePasswordCredentials(account.getUsername(), account.getPassword())); + credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(account.getUsername(), account.getPassword())); } return new RestHighLevelClient(builder); } - } diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/autoconfigure/ElasticsearchProperties.java b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/config/ElasticsearchProperties.java similarity index 94% rename from spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/autoconfigure/ElasticsearchProperties.java rename to spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/config/ElasticsearchProperties.java index 0aeebe3..ee5db86 100644 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/autoconfigure/ElasticsearchProperties.java +++ b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/config/ElasticsearchProperties.java @@ -1,4 +1,4 @@ -package com.xkcoding.elasticsearch.autoconfigure; +package com.xkcoding.elasticsearch.config; import lombok.AllArgsConstructor; import lombok.Builder; @@ -77,6 +77,9 @@ public class ElasticsearchProperties { */ private Account account = new Account(); + /** + * 索引配置信息 + */ @Data public static class Index { @@ -92,6 +95,9 @@ public class ElasticsearchProperties { } + /** + * 认证账户 + */ @Data public static class Account { diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/exception/ElasticsearchException.java b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/exception/ElasticsearchException.java index 621e0bf..ca92416 100644 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/exception/ElasticsearchException.java +++ b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/exception/ElasticsearchException.java @@ -1,6 +1,6 @@ package com.xkcoding.elasticsearch.exception; -import com.xkcoding.elasticsearch.model.ResultCode; +import com.xkcoding.elasticsearch.common.ResultCode; import lombok.Getter; /** diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/BaseElasticsearchService.java b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/base/BaseElasticsearchService.java similarity index 81% rename from spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/BaseElasticsearchService.java rename to spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/base/BaseElasticsearchService.java index 9179de8..fa919be 100644 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/BaseElasticsearchService.java +++ b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/base/BaseElasticsearchService.java @@ -1,8 +1,8 @@ -package com.xkcoding.elasticsearch.service; +package com.xkcoding.elasticsearch.service.base; +import cn.hutool.core.bean.BeanUtil; +import com.xkcoding.elasticsearch.config.ElasticsearchProperties; import com.xkcoding.elasticsearch.exception.ElasticsearchException; -import com.xkcoding.elasticsearch.autoconfigure.ElasticsearchProperties; -import com.xkcoding.elasticsearch.util.BeanUtils; import lombok.extern.slf4j.Slf4j; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.delete.DeleteRequest; @@ -45,31 +45,26 @@ public abstract class BaseElasticsearchService { RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder(); // 默认缓冲限制为100MB,此处修改为30MB。 - builder.setHttpAsyncResponseConsumerFactory( - new HttpAsyncResponseConsumerFactory - .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024)); + builder.setHttpAsyncResponseConsumerFactory(new HttpAsyncResponseConsumerFactory.HeapBufferedResponseConsumerFactory(30 * 1024 * 1024)); COMMON_OPTIONS = builder.build(); } /** * create elasticsearch index (asyc) * - * @author fxbin * @param index elasticsearch index + * @author fxbin */ protected void createIndexRequest(String index) { try { CreateIndexRequest request = new CreateIndexRequest(index); // Settings for this index - request.settings(Settings.builder() - .put("index.number_of_shards", elasticsearchProperties.getIndex().getNumberOfShards()) - .put("index.number_of_replicas", elasticsearchProperties.getIndex().getNumberOfReplicas())); + request.settings(Settings.builder().put("index.number_of_shards", elasticsearchProperties.getIndex().getNumberOfShards()).put("index.number_of_replicas", elasticsearchProperties.getIndex().getNumberOfReplicas())); CreateIndexResponse createIndexResponse = client.indices().create(request, COMMON_OPTIONS); log.info(" whether all of the nodes have acknowledged the request : {}", createIndexResponse.isAcknowledged()); - log.info(" Indicates whether the requisite number of shard copies were started for each shard in the index before timing out :{}", - createIndexResponse.isShardsAcknowledged()); + log.info(" Indicates whether the requisite number of shard copies were started for each shard in the index before timing out :{}", createIndexResponse.isShardsAcknowledged()); } catch (IOException e) { throw new ElasticsearchException("创建索引 {" + index + "} 失败"); } @@ -78,8 +73,8 @@ public abstract class BaseElasticsearchService { /** * delete elasticsearch index * - * @author fxbin * @param index elasticsearch index name + * @author fxbin */ protected void deleteIndexRequest(String index) { DeleteIndexRequest deleteIndexRequest = buildDeleteIndexRequest(index); @@ -93,37 +88,37 @@ public abstract class BaseElasticsearchService { /** * build DeleteIndexRequest * - * @author fxbin * @param index elasticsearch index name + * @author fxbin */ - private static DeleteIndexRequest buildDeleteIndexRequest (String index) { + private static DeleteIndexRequest buildDeleteIndexRequest(String index) { return new DeleteIndexRequest(index); } /** * build IndexRequest * - * @author fxbin - * @param index elasticsearch index name - * @param id request object id + * @param index elasticsearch index name + * @param id request object id * @param object request object * @return {@link org.elasticsearch.action.index.IndexRequest} + * @author fxbin */ protected static IndexRequest buildIndexRequest(String index, String id, Object object) { - return new IndexRequest(index).id(id).source(BeanUtils.toMap(object), XContentType.JSON); + return new IndexRequest(index).id(id).source(BeanUtil.beanToMap(object), XContentType.JSON); } /** * exec updateRequest * - * @author fxbin - * @param index elasticsearch index name - * @param id Document id + * @param index elasticsearch index name + * @param id Document id * @param object request object + * @author fxbin */ protected void updateRequest(String index, String id, Object object) { try { - UpdateRequest updateRequest = new UpdateRequest(index, id).doc(BeanUtils.toMap(object), XContentType.JSON); + UpdateRequest updateRequest = new UpdateRequest(index, id).doc(BeanUtil.beanToMap(object), XContentType.JSON); client.update(updateRequest, COMMON_OPTIONS); } catch (IOException e) { throw new ElasticsearchException("更新索引 {" + index + "} 数据 {" + object + "} 失败"); @@ -133,9 +128,9 @@ public abstract class BaseElasticsearchService { /** * exec deleteRequest * - * @author fxbin * @param index elasticsearch index name - * @param id Document id + * @param id Document id + * @author fxbin */ protected void deleteRequest(String index, String id) { try { @@ -149,9 +144,9 @@ public abstract class BaseElasticsearchService { /** * search all * - * @author fxbin * @param index elasticsearch index name * @return {@link SearchResponse} + * @author fxbin */ protected SearchResponse search(String index) { SearchRequest searchRequest = new SearchRequest(index); diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/impl/PersonServiceImpl.java b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/impl/PersonServiceImpl.java index e72c182..5e9ceca 100644 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/impl/PersonServiceImpl.java +++ b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/service/impl/PersonServiceImpl.java @@ -2,7 +2,7 @@ package com.xkcoding.elasticsearch.service.impl; import cn.hutool.core.bean.BeanUtil; import com.xkcoding.elasticsearch.model.Person; -import com.xkcoding.elasticsearch.service.BaseElasticsearchService; +import com.xkcoding.elasticsearch.service.base.BaseElasticsearchService; import com.xkcoding.elasticsearch.service.PersonService; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.search.SearchResponse; @@ -26,7 +26,6 @@ import java.util.Map; @Service public class PersonServiceImpl extends BaseElasticsearchService implements PersonService { - @Override public void createIndex(String index) { createIndexRequest(index); diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/util/BeanUtils.java b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/util/BeanUtils.java deleted file mode 100644 index 6441634..0000000 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/util/BeanUtils.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.xkcoding.elasticsearch.util; - -import java.beans.BeanInfo; -import java.beans.Introspector; -import java.beans.PropertyDescriptor; -import java.lang.reflect.Method; -import java.util.Map; - -/** - * BeanUtils - * - * @author fxbin - * @version 1.0v - * @since 2019/9/16 16:26 - */ -public class BeanUtils { - - - /** - * Java Bean to Map - * - * @author fxbin - * @param object Object - * @return Map - */ - public static Map toMap(Object object){ - Map map = MapUtils.newHashMap(); - try { - // 获取javaBean的BeanInfo对象 - BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass(),Object.class); - - // 获取属性描述器 - PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); - for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { - // 获取属性名 - String key = propertyDescriptor.getName(); - // 获取该属性的值 - Method readMethod = propertyDescriptor.getReadMethod(); - // 通过反射来调用javaBean定义的getName()方法 - Object value = readMethod.invoke(object); - map.put(key, value); - } - } catch (Exception e) { - e.printStackTrace(); - } - return map; - } - -} diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/util/MapUtils.java b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/util/MapUtils.java deleted file mode 100644 index a58fec9..0000000 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/java/com/xkcoding/elasticsearch/util/MapUtils.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.xkcoding.elasticsearch.util; - -import java.util.HashMap; -import java.util.LinkedHashMap; - -/** - * MapUtils - * - * @author fxbin - * @version 1.0v - * @since 2019/9/16 16:26 - */ -public class MapUtils { - - /** 默认初始大小 */ - private static final int DEFAULT_INITIAL_CAPACITY = 16; - /** 默认增长因子,当Map的size达到 容量*增长因子时,开始扩充Map */ - private static final float DEFAULT_LOAD_FACTOR = 0.75f; - - /** - * 新建一个HashMap - * - * @param Key类型 - * @param Value类型 - * @return HashMap对象 - */ - public static HashMap newHashMap() { - return new HashMap<>(DEFAULT_INITIAL_CAPACITY); - } - - /** - * 新建一个HashMap - * - * @param Key类型 - * @param Value类型 - * @param size 初始大小,由于默认负载因子0.75,传入的size会实际初始大小为size / 0.75 - * @param isOrder Map的Key是否有序,有序返回 {@link LinkedHashMap},否则返回 {@link HashMap} - * @return HashMap对象 - * @since 3.0.4 - */ - public static HashMap newHashMap(int size, boolean isOrder) { - int initialCapacity = (int) (size / DEFAULT_LOAD_FACTOR); - return isOrder ? new LinkedHashMap(initialCapacity) : new HashMap(initialCapacity); - } - - /** - * 新建一个HashMap - * - * @param Key类型 - * @param Value类型 - * @param size 初始大小,由于默认负载因子0.75,传入的size会实际初始大小为size / 0.75 - * @return HashMap对象 - */ - public static HashMap newHashMap(int size) { - return newHashMap(size, false); - } - - /** - * 新建一个HashMap - * - * @param Key类型 - * @param Value类型 - * @param isOrder Map的Key是否有序,有序返回 {@link LinkedHashMap},否则返回 {@link HashMap} - * @return HashMap对象 - */ - public static HashMap newHashMap(boolean isOrder) { - return newHashMap(DEFAULT_INITIAL_CAPACITY, isOrder); - } - -} diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/resources/META-INF/spring.factories b/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 91028fe..0000000 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,3 +0,0 @@ -# Auto Configure -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.xkcoding.elasticsearch.autoconfigure.ElasticsearchAutoConfiguration diff --git a/spring-boot-demo-elasticsearch-rest-high-level-client/src/test/java/com/xkcoding/elasticsearch/ElasticsearchApplicationTests.java b/spring-boot-demo-elasticsearch-rest-high-level-client/src/test/java/com/xkcoding/elasticsearch/ElasticsearchApplicationTests.java index 21f901c..7be0675 100644 --- a/spring-boot-demo-elasticsearch-rest-high-level-client/src/test/java/com/xkcoding/elasticsearch/ElasticsearchApplicationTests.java +++ b/spring-boot-demo-elasticsearch-rest-high-level-client/src/test/java/com/xkcoding/elasticsearch/ElasticsearchApplicationTests.java @@ -5,10 +5,10 @@ import com.xkcoding.elasticsearch.model.Person; import com.xkcoding.elasticsearch.service.PersonService; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -17,22 +17,30 @@ import java.util.List; @SpringBootTest public class ElasticsearchApplicationTests { - @Resource + @Autowired private PersonService personService; + /** + * 测试删除索引 + */ @Test public void deleteIndexTest() { personService.deleteIndex(ElasticsearchConstant.INDEX_NAME); } + /** + * 测试创建索引 + */ @Test public void createIndexTest() { personService.createIndex(ElasticsearchConstant.INDEX_NAME); } + /** + * 测试新增 + */ @Test public void insertTest() { - List list = new ArrayList<>(); list.add(Person.builder().age(11).birthday(new Date()).country("CN").id(1L).name("哈哈").remark("test1").build()); list.add(Person.builder().age(22).birthday(new Date()).country("US").id(2L).name("hiahia").remark("test2").build()); @@ -41,6 +49,9 @@ public class ElasticsearchApplicationTests { personService.insert(ElasticsearchConstant.INDEX_NAME, list); } + /** + * 测试更新 + */ @Test public void updateTest() { Person person = Person.builder().age(33).birthday(new Date()).country("ID_update").id(3L).name("呵呵update").remark("test3_update").build(); @@ -49,16 +60,21 @@ public class ElasticsearchApplicationTests { personService.update(ElasticsearchConstant.INDEX_NAME, list); } + /** + * 测试删除 + */ @Test public void deleteTest() { personService.delete(ElasticsearchConstant.INDEX_NAME, Person.builder().id(1L).build()); } + /** + * 测试查询 + */ @Test public void searchListTest() { List personList = personService.searchList(ElasticsearchConstant.INDEX_NAME); System.out.println(personList); } - }