diff --git a/auth-center/auth-center-bootstrap/src/main/resources/application.yml b/auth-center/auth-center-bootstrap/src/main/resources/application.yml
index 0c15a5eb..1b250b5f 100644
--- a/auth-center/auth-center-bootstrap/src/main/resources/application.yml
+++ b/auth-center/auth-center-bootstrap/src/main/resources/application.yml
@@ -52,6 +52,8 @@ spring:
logging:
config: classpath:logback-configuration/logback-${spring.profiles.active}.xml
+ level:
+ org.springframework.data.elasticsearch.client.WIRE: DEBUG
maf:
project-properties:
diff --git a/auth-center/pom.xml b/auth-center/pom.xml
index 4d07f365..fc6f1755 100644
--- a/auth-center/pom.xml
+++ b/auth-center/pom.xml
@@ -75,6 +75,10 @@
org.springframework.boot
spring-boot-starter-data-redis
+
+ org.springframework.boot
+ spring-boot-starter-data-elasticsearch
+
org.springframework.boot
spring-boot-starter-amqp
diff --git a/docker/configuration/micro-service-config-on-consul/application/application-development-docker.yml b/docker/configuration/micro-service-config-on-consul/application/application-development-docker.yml
index adf1936d..d622d4e2 100644
--- a/docker/configuration/micro-service-config-on-consul/application/application-development-docker.yml
+++ b/docker/configuration/micro-service-config-on-consul/application/application-development-docker.yml
@@ -92,6 +92,11 @@ spring:
max-idle: 10
max-wait: -1ms
min-idle: 0
+ elasticsearch:
+ uris:
+ - http://maf-elasticsearch:9200
+ username: elastic
+ password: maf@elasticsearch
quartz:
job-store-type: JDBC
jdbc:
diff --git a/docker/configuration/micro-service-config-on-consul/application/application-development-local.yml b/docker/configuration/micro-service-config-on-consul/application/application-development-local.yml
index 8d898649..349e0b58 100644
--- a/docker/configuration/micro-service-config-on-consul/application/application-development-local.yml
+++ b/docker/configuration/micro-service-config-on-consul/application/application-development-local.yml
@@ -92,6 +92,11 @@ spring:
max-idle: 10
max-wait: -1ms
min-idle: 0
+ elasticsearch:
+ uris:
+ - http://localhost:9200
+ username: elastic
+ password: maf@elasticsearch
quartz:
job-store-type: JDBC
jdbc:
diff --git a/docker/configuration/micro-service-config-on-consul/application/application-production.yml b/docker/configuration/micro-service-config-on-consul/application/application-production.yml
index eaced713..8426d6b0 100644
--- a/docker/configuration/micro-service-config-on-consul/application/application-production.yml
+++ b/docker/configuration/micro-service-config-on-consul/application/application-production.yml
@@ -92,6 +92,11 @@ spring:
max-idle: 10
max-wait: -1ms
min-idle: 0
+ elasticsearch:
+ uris:
+ - http://maf-elasticsearch:9200
+ username: elastic
+ password: maf@elasticsearch
quartz:
job-store-type: JDBC
jdbc:
diff --git a/docker/configuration/micro-service-config-on-consul/application/application-stage.yml b/docker/configuration/micro-service-config-on-consul/application/application-stage.yml
index eaced713..8426d6b0 100644
--- a/docker/configuration/micro-service-config-on-consul/application/application-stage.yml
+++ b/docker/configuration/micro-service-config-on-consul/application/application-stage.yml
@@ -92,6 +92,11 @@ spring:
max-idle: 10
max-wait: -1ms
min-idle: 0
+ elasticsearch:
+ uris:
+ - http://maf-elasticsearch:9200
+ username: elastic
+ password: maf@elasticsearch
quartz:
job-store-type: JDBC
jdbc:
diff --git a/docker/configuration/micro-service-config-on-consul/application/application-test.yml b/docker/configuration/micro-service-config-on-consul/application/application-test.yml
index adf1936d..d622d4e2 100644
--- a/docker/configuration/micro-service-config-on-consul/application/application-test.yml
+++ b/docker/configuration/micro-service-config-on-consul/application/application-test.yml
@@ -92,6 +92,11 @@ spring:
max-idle: 10
max-wait: -1ms
min-idle: 0
+ elasticsearch:
+ uris:
+ - http://maf-elasticsearch:9200
+ username: elastic
+ password: maf@elasticsearch
quartz:
job-store-type: JDBC
jdbc:
diff --git a/maf-mis/pom.xml b/maf-mis/pom.xml
index 3632affc..e94174eb 100644
--- a/maf-mis/pom.xml
+++ b/maf-mis/pom.xml
@@ -75,6 +75,10 @@
org.springframework.boot
spring-boot-starter-data-redis
+
+ org.springframework.boot
+ spring-boot-starter-data-elasticsearch
+
org.springframework.boot
spring-boot-starter-amqp
diff --git a/spring-cloud-starter/pom.xml b/spring-cloud-starter/pom.xml
index 67c3b381..1c9473f6 100644
--- a/spring-cloud-starter/pom.xml
+++ b/spring-cloud-starter/pom.xml
@@ -42,6 +42,11 @@
spring-boot-starter-data-redis
provided
+
+ org.springframework.boot
+ spring-boot-starter-data-elasticsearch
+ provided
+
org.springframework.boot
spring-boot-starter-amqp
diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java
index 035af8a4..a044becf 100644
--- a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java
+++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/MafAutoConfiguration.java
@@ -11,6 +11,7 @@
import com.jmsoftware.maf.springcloudstarter.controller.HttpApiResourceRemoteApiController;
import com.jmsoftware.maf.springcloudstarter.controller.RedirectController;
import com.jmsoftware.maf.springcloudstarter.database.MyBatisPlusConfiguration;
+import com.jmsoftware.maf.springcloudstarter.elasticsearch.ElasticsearchConfiguration;
import com.jmsoftware.maf.springcloudstarter.filter.AccessLogFilter;
import com.jmsoftware.maf.springcloudstarter.helper.HttpApiScanHelper;
import com.jmsoftware.maf.springcloudstarter.helper.IpHelper;
@@ -66,6 +67,7 @@
WebMvcConfiguration.class,
MyBatisPlusConfiguration.class,
RedisConfiguration.class,
+ ElasticsearchConfiguration.class,
WebSecurityConfiguration.class,
RestTemplateConfiguration.class,
AsyncConfiguration.class,
diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/WebMvcConfiguration.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/WebMvcConfiguration.java
index d723b5f2..32310426 100644
--- a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/WebMvcConfiguration.java
+++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/configuration/WebMvcConfiguration.java
@@ -2,15 +2,12 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.core.task.AsyncTaskExecutor;
-import org.springframework.scheduling.annotation.AsyncConfigurer;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.context.request.async.CallableProcessingInterceptor;
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import java.util.Objects;
-
import static org.springframework.web.cors.CorsConfiguration.ALL;
/**
@@ -29,7 +26,7 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
* can be cached by clients. By default this is set to 1800 seconds (30 minutes).
*/
private static final long MAX_AGE_SECS = 3600;
- private final AsyncConfigurer asyncConfigurer;
+ private final ThreadPoolTaskExecutor threadPoolTaskExecutor;
private final CallableProcessingInterceptor callableProcessingInterceptor;
/**
@@ -52,7 +49,7 @@ public void addCorsMappings(CorsRegistry registry) {
@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
configurer.setDefaultTimeout(360000)
- .setTaskExecutor((AsyncTaskExecutor) Objects.requireNonNull(this.asyncConfigurer.getAsyncExecutor()))
+ .setTaskExecutor(threadPoolTaskExecutor)
.registerCallableInterceptors(this.callableProcessingInterceptor);
}
}
diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/Book.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/Book.java
new file mode 100644
index 00000000..4c269d46
--- /dev/null
+++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/Book.java
@@ -0,0 +1,44 @@
+package com.jmsoftware.maf.springcloudstarter.elasticsearch;
+
+import lombok.Data;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.elasticsearch.annotations.Document;
+import org.springframework.data.elasticsearch.annotations.Field;
+import org.springframework.data.elasticsearch.annotations.FieldType;
+
+import java.time.LocalDateTime;
+
+/**
+ * Description: Book, change description here.
+ *
+ * @author 钟俊 (za-zhongjun), email: jun.zhong@zatech.com, date: 2/20/2022 1:40 PM
+ */
+@Data
+@Document(indexName = "books")
+public class Book {
+ /**
+ * The Id.
+ */
+ @Id
+ private String id;
+ /**
+ * The Title.
+ */
+ @Field(type = FieldType.Text, name = "name")
+ private String name;
+ /**
+ * The Summary.
+ */
+ @Field(type = FieldType.Text)
+ private String summary;
+ /**
+ * The Publishing date.
+ */
+ @Field(type = FieldType.Date, name = "publishDate", format = {}, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'")
+ private LocalDateTime publishingDate;
+ /**
+ * The Price.
+ */
+ @Field(type = FieldType.Double, name = "price")
+ private double price;
+}
diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/BookRepository.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/BookRepository.java
new file mode 100644
index 00000000..1cac30d4
--- /dev/null
+++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/BookRepository.java
@@ -0,0 +1,34 @@
+package com.jmsoftware.maf.springcloudstarter.elasticsearch;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.elasticsearch.annotations.Query;
+import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
+
+import java.util.List;
+
+/**
+ * Description: BookRepository, change description here.
+ *
+ * @author 钟俊 (za-zhongjun), email: jun.zhong@zatech.com, date: 2/20/2022 2:06 PM
+ **/
+public interface BookRepository extends ElasticsearchRepository {
+ /**
+ * Find by name and price list.
+ *
+ * @param name the name
+ * @param price the price
+ * @return the list
+ */
+ List findByNameAndPrice(String name, Integer price);
+
+ /**
+ * Find by name page.
+ *
+ * @param name the name
+ * @param pageable the pageable
+ * @return the page
+ */
+ @Query("{\"match\": {\"name\": {\"query\": \"?0\"}}}")
+ Page findByName(String name, Pageable pageable);
+}
diff --git a/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/ElasticsearchConfiguration.java b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/ElasticsearchConfiguration.java
new file mode 100644
index 00000000..93b0b952
--- /dev/null
+++ b/spring-cloud-starter/src/main/java/com/jmsoftware/maf/springcloudstarter/elasticsearch/ElasticsearchConfiguration.java
@@ -0,0 +1,33 @@
+package com.jmsoftware.maf.springcloudstarter.elasticsearch;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.elasticsearch.client.RestHighLevelClient;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchProperties;
+import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;
+import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * Description: ElasticsearchConfiguration, change description here.
+ *
+ * @author 钟俊 (za-zhongjun), email: jun.zhong@zatech.com, date: 2/19/2022 11:38 PM
+ * @see
+ * Spring Data Elasticsearch - Reference Documentation
+ * @see
+ * Client Logging
+ **/
+@Slf4j
+@RequiredArgsConstructor
+@EnableElasticsearchRepositories
+@ConditionalOnClass({AbstractElasticsearchConfiguration.class, RestHighLevelClient.class})
+public class ElasticsearchConfiguration {
+ private final ElasticsearchProperties elasticsearchProperties;
+
+ @PostConstruct
+ public void init() {
+ log.warn("ElasticsearchConfiguration init. URIs: {}", elasticsearchProperties.getUris());
+ }
+}