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);
}
-
}