From 964c4beb1169155d6a1aa6e8189507cb19f4910d Mon Sep 17 00:00:00 2001 From: Qing Date: Tue, 5 Mar 2024 21:16:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20es=E5=8E=9F=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qing-yu-club-auth-common/pom.xml | 2 +- qing-yu-club-oss/pom.xml | 2 +- .../controller/TestFeignController.java | 22 ++++++ .../qing-yu-club-infra/pom.xml | 5 ++ .../infra/basic/entity/SubjectInfoEs.java | 42 +++++++++++ .../infra/basic/es/EsClusterConfig.java | 14 ++++ .../basic/esRepo/SubjectEsRepository.java | 16 ++++ .../infra/basic/service/SubjectEsService.java | 18 +++++ .../service/impl/SubjectEsServiceImpl.java | 73 +++++++++++++++++++ .../src/main/resources/application.yml | 3 + 10 files changed, 195 insertions(+), 2 deletions(-) create mode 100644 qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/entity/SubjectInfoEs.java create mode 100644 qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/es/EsClusterConfig.java create mode 100644 qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/esRepo/SubjectEsRepository.java create mode 100644 qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/service/SubjectEsService.java create mode 100644 qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/service/impl/SubjectEsServiceImpl.java diff --git a/qing-yu-club-auth/qing-yu-club-auth-common/pom.xml b/qing-yu-club-auth/qing-yu-club-auth-common/pom.xml index 43d12a7..b76305c 100644 --- a/qing-yu-club-auth/qing-yu-club-auth-common/pom.xml +++ b/qing-yu-club-auth/qing-yu-club-auth-common/pom.xml @@ -15,7 +15,7 @@ 8 - 8 + 8 1.8 UTF-8 UTF-8 diff --git a/qing-yu-club-oss/pom.xml b/qing-yu-club-oss/pom.xml index 3fa4e71..cb4abec 100644 --- a/qing-yu-club-oss/pom.xml +++ b/qing-yu-club-oss/pom.xml @@ -13,7 +13,7 @@ 8 - 8 + 8 1.8 UTF-8 UTF-8 diff --git a/qing-yu-club-subject/qing-yu-club-application/qing-yu-club-application-controller/src/main/java/com/landaiqing/subject/application/controller/TestFeignController.java b/qing-yu-club-subject/qing-yu-club-application/qing-yu-club-application-controller/src/main/java/com/landaiqing/subject/application/controller/TestFeignController.java index 111aede..acfae55 100644 --- a/qing-yu-club-subject/qing-yu-club-application/qing-yu-club-application-controller/src/main/java/com/landaiqing/subject/application/controller/TestFeignController.java +++ b/qing-yu-club-subject/qing-yu-club-application/qing-yu-club-application-controller/src/main/java/com/landaiqing/subject/application/controller/TestFeignController.java @@ -1,5 +1,6 @@ package com.landaiqing.subject.application.controller; +import com.landaiqing.subject.infra.basic.service.SubjectEsService; import com.landaiqing.subject.infra.entity.UserInfo; import com.landaiqing.subject.infra.rpc.UserRpc; import lombok.extern.slf4j.Slf4j; @@ -23,10 +24,31 @@ public class TestFeignController { @Resource private UserRpc userRpc; + @Resource + private SubjectEsService subjectEsService; @GetMapping("testFeign") public void testFeign() { UserInfo userInfo = userRpc.getUserInfo("jichi"); log.info("testFeign.userInfo:{}", userInfo); } + @GetMapping("testCreateIndex") + public void testCreateIndex() { + subjectEsService.createIndex(); + } + + @GetMapping("addDoc") + public void addDoc() { + subjectEsService.addDocs(); + } + + @GetMapping("find") + public void find() { + subjectEsService.find(); + } + + @GetMapping("search") + public void search() { + subjectEsService.search(); + } } diff --git a/qing-yu-club-subject/qing-yu-club-infra/pom.xml b/qing-yu-club-subject/qing-yu-club-infra/pom.xml index 3bd7b69..6d43246 100644 --- a/qing-yu-club-subject/qing-yu-club-infra/pom.xml +++ b/qing-yu-club-subject/qing-yu-club-infra/pom.xml @@ -56,5 +56,10 @@ qing-yu-club-auth-api 1.0-SNAPSHOT + + org.springframework.boot + spring-boot-starter-data-elasticsearch + 2.4.2 + diff --git a/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/entity/SubjectInfoEs.java b/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/entity/SubjectInfoEs.java new file mode 100644 index 0000000..57efeb5 --- /dev/null +++ b/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/entity/SubjectInfoEs.java @@ -0,0 +1,42 @@ +package com.landaiqing.subject.infra.basic.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +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.util.Date; + +/** + * @Classname SubjectInfoEs + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.subject.infra.basic.entity + * @Author: landaiqing + * @CreateTime: 2024-03-04 18:14 + * @Description: TODO + * @Version: 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Document(indexName = "subject_index",createIndex = false) +public class SubjectInfoEs { + @Field(type = FieldType.Long) + @Id + private Long id; + + @Field(type = FieldType.Text, analyzer = "ik_smart") + private String subjectName; + + @Field(type = FieldType.Text, analyzer = "ik_smart") + private String subjectAnswer; + + @Field(type = FieldType.Keyword) + private String createUser; + + @Field(type = FieldType.Date,index = false) + private Date createTime; +} diff --git a/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/es/EsClusterConfig.java b/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/es/EsClusterConfig.java new file mode 100644 index 0000000..dd6bbdf --- /dev/null +++ b/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/es/EsClusterConfig.java @@ -0,0 +1,14 @@ +package com.landaiqing.subject.infra.basic.es; + +/** + * @Classname EsClusterConfig + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.subject.infra.basic.es + * @Author: landaiqing + * @CreateTime: 2024-03-05 21:15 + * @Description: TODO + * @Version: 1.0 + */ +public class EsClusterConfig { + private String name; +} diff --git a/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/esRepo/SubjectEsRepository.java b/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/esRepo/SubjectEsRepository.java new file mode 100644 index 0000000..4152c93 --- /dev/null +++ b/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/esRepo/SubjectEsRepository.java @@ -0,0 +1,16 @@ +package com.landaiqing.subject.infra.basic.esRepo; + +import com.landaiqing.subject.infra.basic.entity.SubjectInfoEs; +import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; + +/** + * @Classname SubjectEsRepository + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.subject.infra.basic.esRepo + * @Author: landaiqing + * @CreateTime: 2024-03-04 18:19 + * @Description: TODO + * @Version: 1.0 + */ +public interface SubjectEsRepository extends ElasticsearchRepository { +} diff --git a/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/service/SubjectEsService.java b/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/service/SubjectEsService.java new file mode 100644 index 0000000..59f21db --- /dev/null +++ b/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/service/SubjectEsService.java @@ -0,0 +1,18 @@ +package com.landaiqing.subject.infra.basic.service; + +/** + * @Classname SubjectEsService + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.subject.infra.basic.service + * @Author: landaiqing + * @CreateTime: 2024-03-04 18:21 + * @Description: TODO + * @Version: 1.0 + */ +public interface SubjectEsService { + void createIndex(); + void addDocs(); + + void search(); + void find(); +} diff --git a/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/service/impl/SubjectEsServiceImpl.java b/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/service/impl/SubjectEsServiceImpl.java new file mode 100644 index 0000000..9863ca5 --- /dev/null +++ b/qing-yu-club-subject/qing-yu-club-infra/src/main/java/com/landaiqing/subject/infra/basic/service/impl/SubjectEsServiceImpl.java @@ -0,0 +1,73 @@ +package com.landaiqing.subject.infra.basic.service.impl; + +import com.alibaba.fastjson.JSON; +import com.landaiqing.subject.infra.basic.entity.SubjectInfoEs; +import com.landaiqing.subject.infra.basic.esRepo.SubjectEsRepository; +import com.landaiqing.subject.infra.basic.service.SubjectEsService; +import lombok.extern.slf4j.Slf4j; +import org.elasticsearch.index.query.QueryBuilders; +import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; +import org.springframework.data.elasticsearch.core.IndexOperations; +import org.springframework.data.elasticsearch.core.SearchHit; +import org.springframework.data.elasticsearch.core.SearchHits; +import org.springframework.data.elasticsearch.core.document.Document; +import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; +import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; + +/** + * @Classname SubjectEsServiceImpl + * @BelongsProject: qing-yu-club + * @BelongsPackage: com.landaiqing.subject.infra.basic.service.impl + * @Author: landaiqing + * @CreateTime: 2024-03-04 18:22 + * @Description: TODO + * @Version: 1.0 + */ +@Service +@Slf4j +public class SubjectEsServiceImpl implements SubjectEsService { + @Resource + private ElasticsearchRestTemplate elasticsearchRestTemplate; + @Resource + private SubjectEsRepository subjectEsRepository; + + @Override + public void createIndex() { + IndexOperations indexOperations = + elasticsearchRestTemplate.indexOps(SubjectInfoEs.class); + indexOperations.create(); + Document mapping = indexOperations.createMapping(SubjectInfoEs.class); + indexOperations.putMapping(mapping); + } + + @Override + public void addDocs() { + List list = new LinkedList<>(); + list.add(new SubjectInfoEs(1L, "redis 是什么", "redis是一个缓存", "landaiqing", new Date())); + list.add(new SubjectInfoEs(2L, "mysql 是什么", "mysql是一个数据库", "landaiqing", new Date())); + subjectEsRepository.saveAll(list); + } + + @Override + public void search() { + NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder() + .withQuery(QueryBuilders.matchQuery("subjectName", "redis")).build(); + SearchHits search = elasticsearchRestTemplate.search(nativeSearchQuery, SubjectInfoEs.class); + List> searchHits = search.getSearchHits(); + log.info("searchHits:{}", JSON.toJSONString(searchHits)); + } + + @Override + public void find() { + Iterable all = subjectEsRepository.findAll(); + for (SubjectInfoEs subjectInfoEs: all){ + log.info("subjectInfoEs:{}",JSON.toJSONString(subjectInfoEs)); + } + } +} diff --git a/qing-yu-club-subject/qing-yu-club-starter/src/main/resources/application.yml b/qing-yu-club-subject/qing-yu-club-starter/src/main/resources/application.yml index 238df52..34b3f31 100644 --- a/qing-yu-club-subject/qing-yu-club-starter/src/main/resources/application.yml +++ b/qing-yu-club-subject/qing-yu-club-starter/src/main/resources/application.yml @@ -27,6 +27,9 @@ spring: enabled: true config: enabled: true + elasticsearch: + rest: + uris: http://116.196.80.239:9200 publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJ9zUefu5PFeiy4nNNRCIaNT5IY3IxRrlHMiotffSPstMensKg4PoSWJsRRrp/zQEzWegxz2Bkv3F5vfGqqM9N0CAwEAAQ== logging: config: classpath:log4j2-spring.xml