From 413682d696872953230da8e34d95cb1aa58f9ae1 Mon Sep 17 00:00:00 2001 From: YunaiV <> Date: Mon, 4 Nov 2019 23:26:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20elasticsearch=20=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B=EF=BC=88elasticsearch=20=E9=83=A8=E5=88=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../classes/META-INF/lab-09.kotlin_module | Bin 16 -> 0 bytes .../classes/META-INF/lab-10.kotlin_module | Bin 16 -> 0 bytes ...spring-data-redis-with-jedis.kotlin_module | Bin 16 -> 0 bytes ...spring-data-redis-with-jedis.kotlin_module | Bin 16 -> 0 bytes ...spring-data-redis-with-jedis.kotlin_module | Bin 16 -> 0 bytes ...spring-data-redis-with-jedis.kotlin_module | Bin 16 -> 0 bytes .../META-INF/lab-12-mybatis.kotlin_module | Bin 16 -> 0 bytes .../target/classes/sql/users.sql | 8 ++ .../META-INF/lab-12-mybatis.kotlin_module | Bin 16 -> 0 bytes .../target/classes/mybatis-config.xml | 19 --- .../target/classes/sql/users.sql | 1 + .../target/classes/application.yaml | 4 +- .../lab-15-spring-data-elasticsearch/pom.xml | 31 +++++ .../springdataelasticsearch/Application.java | 7 ++ .../constant/FieldAnalyzer.java | 26 ++++ .../dataobject/ESProductDO.java | 114 ++++++++++++++++++ .../repository/ProductRepository.java | 8 ++ .../src/main/resources/application.yaml | 8 ++ .../repository/ProductRepositoryTest.java | 61 ++++++++++ .../dataobject/ESProductDO.java | 10 +- .../repository/ProductRepository.java | 3 - lab-15/pom.xml | 1 + 22 files changed, 276 insertions(+), 25 deletions(-) delete mode 100644 lab-09/target/classes/META-INF/lab-09.kotlin_module delete mode 100644 lab-10/target/classes/META-INF/lab-10.kotlin_module delete mode 100644 lab-11/lab-07-spring-data-redis-with-jedis/target/classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module delete mode 100644 lab-11/lab-07-spring-data-redis-with-jedis/target/test-classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module delete mode 100644 lab-11/lab-07-spring-data-redis-with-redisson/target/classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module delete mode 100644 lab-11/lab-07-spring-data-redis-with-redisson/target/test-classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module delete mode 100644 lab-12/lab-12-mybatis-annotation/target/classes/META-INF/lab-12-mybatis.kotlin_module delete mode 100644 lab-12/lab-12-mybatis-annotation/target/test-classes/META-INF/lab-12-mybatis.kotlin_module delete mode 100644 lab-12/lab-12-mybatis-plus/target/classes/mybatis-config.xml create mode 100644 lab-15/lab-15-spring-data-elasticsearch/pom.xml create mode 100644 lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/Application.java create mode 100644 lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/constant/FieldAnalyzer.java create mode 100644 lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/dataobject/ESProductDO.java create mode 100644 lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/repository/ProductRepository.java create mode 100644 lab-15/lab-15-spring-data-elasticsearch/src/main/resources/application.yaml create mode 100644 lab-15/lab-15-spring-data-elasticsearch/src/test/java/cn/iocoder/springboot/lab15/springdataelasticsearch/repository/ProductRepositoryTest.java diff --git a/lab-09/target/classes/META-INF/lab-09.kotlin_module b/lab-09/target/classes/META-INF/lab-09.kotlin_module deleted file mode 100644 index 8fb60192d378759239a3ecbf60eac8c8de446e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|UH|}6022TJ diff --git a/lab-10/target/classes/META-INF/lab-10.kotlin_module b/lab-10/target/classes/META-INF/lab-10.kotlin_module deleted file mode 100644 index 8fb60192d378759239a3ecbf60eac8c8de446e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|UH|}6022TJ diff --git a/lab-11/lab-07-spring-data-redis-with-jedis/target/classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module b/lab-11/lab-07-spring-data-redis-with-jedis/target/classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module deleted file mode 100644 index 8fb60192d378759239a3ecbf60eac8c8de446e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|UH|}6022TJ diff --git a/lab-11/lab-07-spring-data-redis-with-jedis/target/test-classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module b/lab-11/lab-07-spring-data-redis-with-jedis/target/test-classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module deleted file mode 100644 index 8fb60192d378759239a3ecbf60eac8c8de446e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|UH|}6022TJ diff --git a/lab-11/lab-07-spring-data-redis-with-redisson/target/classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module b/lab-11/lab-07-spring-data-redis-with-redisson/target/classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module deleted file mode 100644 index 8fb60192d378759239a3ecbf60eac8c8de446e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|UH|}6022TJ diff --git a/lab-11/lab-07-spring-data-redis-with-redisson/target/test-classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module b/lab-11/lab-07-spring-data-redis-with-redisson/target/test-classes/META-INF/lab-07-spring-data-redis-with-jedis.kotlin_module deleted file mode 100644 index 8fb60192d378759239a3ecbf60eac8c8de446e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|UH|}6022TJ diff --git a/lab-12/lab-12-mybatis-annotation/target/classes/META-INF/lab-12-mybatis.kotlin_module b/lab-12/lab-12-mybatis-annotation/target/classes/META-INF/lab-12-mybatis.kotlin_module deleted file mode 100644 index 2983af70661ad375cc499ebc4da5a68ca46c532e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|egFVe02KfL diff --git a/lab-12/lab-12-mybatis-annotation/target/classes/sql/users.sql b/lab-12/lab-12-mybatis-annotation/target/classes/sql/users.sql index e69de29b..02a9b8eb 100644 --- a/lab-12/lab-12-mybatis-annotation/target/classes/sql/users.sql +++ b/lab-12/lab-12-mybatis-annotation/target/classes/sql/users.sql @@ -0,0 +1,8 @@ +CREATE TABLE `users` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号', + `username` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号', + `password` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '密码', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `idx_username` (`username`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; diff --git a/lab-12/lab-12-mybatis-annotation/target/test-classes/META-INF/lab-12-mybatis.kotlin_module b/lab-12/lab-12-mybatis-annotation/target/test-classes/META-INF/lab-12-mybatis.kotlin_module deleted file mode 100644 index 2983af70661ad375cc499ebc4da5a68ca46c532e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|egFVe02KfL diff --git a/lab-12/lab-12-mybatis-plus/target/classes/mybatis-config.xml b/lab-12/lab-12-mybatis-plus/target/classes/mybatis-config.xml deleted file mode 100644 index 725aa31a..00000000 --- a/lab-12/lab-12-mybatis-plus/target/classes/mybatis-config.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/lab-12/lab-12-mybatis-plus/target/classes/sql/users.sql b/lab-12/lab-12-mybatis-plus/target/classes/sql/users.sql index 02a9b8eb..51658d31 100644 --- a/lab-12/lab-12-mybatis-plus/target/classes/sql/users.sql +++ b/lab-12/lab-12-mybatis-plus/target/classes/sql/users.sql @@ -3,6 +3,7 @@ CREATE TABLE `users` ( `username` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号', `password` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '密码', `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `deleted` bit(1) DEFAULT NULL COMMENT '是否删除。0-未删除;1-删除', PRIMARY KEY (`id`), UNIQUE KEY `idx_username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; diff --git a/lab-12/lab-12-mybatis-tk/target/classes/application.yaml b/lab-12/lab-12-mybatis-tk/target/classes/application.yaml index e12a676c..4d5361fc 100644 --- a/lab-12/lab-12-mybatis-tk/target/classes/application.yaml +++ b/lab-12/lab-12-mybatis-tk/target/classes/application.yaml @@ -14,8 +14,8 @@ mybatis: # mapper 配置内容 mapper: - mappers: cn.iocoder.springboot.lab12.mybatis.util.BaseMapper - not-empty: false + mappers: cn.iocoder.springboot.lab12.mybatis.util.BaseMapper # 设置基础 Mapper 接口 + not-empty: true # 在 INSERT 和 UPDATE 操作时,是否会判断字段是否为空。即 identity: MYSQL # PageHelper 配置内容 diff --git a/lab-15/lab-15-spring-data-elasticsearch/pom.xml b/lab-15/lab-15-spring-data-elasticsearch/pom.xml new file mode 100644 index 00000000..df7e8f22 --- /dev/null +++ b/lab-15/lab-15-spring-data-elasticsearch/pom.xml @@ -0,0 +1,31 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.1.3.RELEASE + + + 4.0.0 + + lab-15-spring-data-elasticsearch + + + + + org.springframework.boot + spring-boot-starter-data-elasticsearch + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + diff --git a/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/Application.java b/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/Application.java new file mode 100644 index 00000000..8e34c1ea --- /dev/null +++ b/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/Application.java @@ -0,0 +1,7 @@ +package cn.iocoder.springboot.lab15.springdataelasticsearch; + +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { +} diff --git a/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/constant/FieldAnalyzer.java b/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/constant/FieldAnalyzer.java new file mode 100644 index 00000000..b884b093 --- /dev/null +++ b/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/constant/FieldAnalyzer.java @@ -0,0 +1,26 @@ +package cn.iocoder.springboot.lab15.springdataelasticsearch.constant; + +/** + * ES 字段分析器的枚举类 + * + * 关于 IK 分词,文章 https://blog.csdn.net/xsdxs/article/details/72853288 不错。 + * 目前项目使用的 ES 版本是 6.7.1 ,可以在 https://www.elastic.co/cn/downloads/past-releases/elasticsearch-6-7-1 下载。 + * 如果不知道怎么安装 ES ,可以看 https://blog.csdn.net/chengyuqiang/article/details/78837712 简单。 + */ +public class FieldAnalyzer { + + /** + * IK 最大化分词 + * + * 会将文本做最细粒度的拆分 + */ + public static final String IK_MAX_WORD = "ik_max_word"; + + /** + * IK 智能分词 + * + * 会做最粗粒度的拆分 + */ + public static final String IK_SMART = "ik_smart"; + +} diff --git a/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/dataobject/ESProductDO.java b/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/dataobject/ESProductDO.java new file mode 100644 index 00000000..81b00dde --- /dev/null +++ b/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/dataobject/ESProductDO.java @@ -0,0 +1,114 @@ +package cn.iocoder.springboot.lab15.springdataelasticsearch.dataobject; + +import cn.iocoder.springboot.lab15.springdataelasticsearch.constant.FieldAnalyzer; +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; + +@Document(indexName = "product", // 索引名 + type = "product", // 类型。未来的版本即将废弃 + shards = 1, // 默认索引分区数 + replicas = 0, // 每个分区的备份数 + refreshInterval = "-1" // 刷新间隔 +) +public class ESProductDO { + + /** + * ID 主键 + */ + @Id + private Integer id; + + /** + * SPU 名字 + */ + @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text) + private String name; + /** + * 卖点 + */ + @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text) + private String sellPoint; + /** + * 描述 + */ + @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text) + private String description; + /** + * 分类编号 + */ + private Integer cid; + /** + * 分类名 + */ + @Field(analyzer = FieldAnalyzer.IK_MAX_WORD, type = FieldType.Text) + private String categoryName; + + public Integer getId() { + return id; + } + + public ESProductDO setId(Integer id) { + this.id = id; + return this; + } + + public String getName() { + return name; + } + + public ESProductDO setName(String name) { + this.name = name; + return this; + } + + public String getSellPoint() { + return sellPoint; + } + + public ESProductDO setSellPoint(String sellPoint) { + this.sellPoint = sellPoint; + return this; + } + + public String getDescription() { + return description; + } + + public ESProductDO setDescription(String description) { + this.description = description; + return this; + } + + public Integer getCid() { + return cid; + } + + public ESProductDO setCid(Integer cid) { + this.cid = cid; + return this; + } + + public String getCategoryName() { + return categoryName; + } + + public ESProductDO setCategoryName(String categoryName) { + this.categoryName = categoryName; + return this; + } + + @Override + public String toString() { + return "ProductDO{" + + "id=" + id + + ", name='" + name + '\'' + + ", sellPoint='" + sellPoint + '\'' + + ", description='" + description + '\'' + + ", cid=" + cid + + ", categoryName='" + categoryName + '\'' + + '}'; + } + +} diff --git a/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/repository/ProductRepository.java b/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/repository/ProductRepository.java new file mode 100644 index 00000000..350f83aa --- /dev/null +++ b/lab-15/lab-15-spring-data-elasticsearch/src/main/java/cn/iocoder/springboot/lab15/springdataelasticsearch/repository/ProductRepository.java @@ -0,0 +1,8 @@ +package cn.iocoder.springboot.lab15.springdataelasticsearch.repository; + +import cn.iocoder.springboot.lab15.springdataelasticsearch.dataobject.ESProductDO; +import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; + +public interface ProductRepository extends ElasticsearchRepository { + +} diff --git a/lab-15/lab-15-spring-data-elasticsearch/src/main/resources/application.yaml b/lab-15/lab-15-spring-data-elasticsearch/src/main/resources/application.yaml new file mode 100644 index 00000000..5c2d1ff9 --- /dev/null +++ b/lab-15/lab-15-spring-data-elasticsearch/src/main/resources/application.yaml @@ -0,0 +1,8 @@ +spring: + data: + # Elasticsearch 配置项 + elasticsearch: + cluster-name: elasticsearch + cluster-nodes: 127.0.0.1:9300 + repositories: + enable: true diff --git a/lab-15/lab-15-spring-data-elasticsearch/src/test/java/cn/iocoder/springboot/lab15/springdataelasticsearch/repository/ProductRepositoryTest.java b/lab-15/lab-15-spring-data-elasticsearch/src/test/java/cn/iocoder/springboot/lab15/springdataelasticsearch/repository/ProductRepositoryTest.java new file mode 100644 index 00000000..e7d2b9ee --- /dev/null +++ b/lab-15/lab-15-spring-data-elasticsearch/src/test/java/cn/iocoder/springboot/lab15/springdataelasticsearch/repository/ProductRepositoryTest.java @@ -0,0 +1,61 @@ +package cn.iocoder.springboot.lab15.springdataelasticsearch.repository; + +import cn.iocoder.springboot.lab15.springdataelasticsearch.Application; +import cn.iocoder.springboot.lab15.springdataelasticsearch.dataobject.ESProductDO; +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 java.util.Arrays; +import java.util.Optional; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Application.class) +public class ProductRepositoryTest { + + @Autowired + private ProductRepository productRepository; + + @Test // 插入一条记录 + public void testInsert() { + ESProductDO product = new ESProductDO(); + product.setId(1); // 一般 ES 的 ID 编号,使用 DB 数据对应的编号。这里,先写死 + product.setName("芋道源码"); + product.setSellPoint("愿半生编码,如一生老友"); + product.setDescription("我只是一个描述"); + product.setCid(1); + product.setCategoryName("技术"); + productRepository.save(product); + } + + // 这里要注意,如果使用 save 方法来更新的话,必须是全量字段,否则其它字段会被覆盖。 + // 所以,这里仅仅是作为一个示例。 + @Test // 更新一条记录 + public void testUpdate() { + ESProductDO product = new ESProductDO(); + product.setId(1); + product.setCid(2); + product.setCategoryName("技术-Java"); + productRepository.save(product); + } + + @Test // 根据 ID 编号,删除一条记录 + public void testDelete() { + productRepository.deleteById(1); + } + + @Test // 根据 ID 编号,查询一条记录 + public void testSelectById() { + Optional userDO = productRepository.findById(1); + System.out.println(userDO.isPresent()); + } + + @Test // 根据 ID 编号数组,查询多条记录 + public void testSelectByIds() { + Iterable users = productRepository.findAllById(Arrays.asList(1, 4)); + users.forEach(System.out::println); + } + +} diff --git a/lab-15/lab-15-spring-data-jest/src/main/java/cn/iocoder/springboot/lab15/springdatajest/dataobject/ESProductDO.java b/lab-15/lab-15-spring-data-jest/src/main/java/cn/iocoder/springboot/lab15/springdatajest/dataobject/ESProductDO.java index 32fc16b2..194669d7 100644 --- a/lab-15/lab-15-spring-data-jest/src/main/java/cn/iocoder/springboot/lab15/springdatajest/dataobject/ESProductDO.java +++ b/lab-15/lab-15-spring-data-jest/src/main/java/cn/iocoder/springboot/lab15/springdatajest/dataobject/ESProductDO.java @@ -6,9 +6,17 @@ import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; -@Document(indexName = "product", type = "product", shards = 1, replicas = 0, refreshInterval = "-1") +@Document(indexName = "product", // 索引名 + type = "product", // 类型。未来的版本即将废弃 + shards = 1, // 默认索引分区数 + replicas = 0, // 每个分区的备份数 + refreshInterval = "-1" // 刷新间隔 +) public class ESProductDO { + /** + * ID 主键 + */ @Id private Integer id; diff --git a/lab-15/lab-15-spring-data-jest/src/main/java/cn/iocoder/springboot/lab15/springdatajest/repository/ProductRepository.java b/lab-15/lab-15-spring-data-jest/src/main/java/cn/iocoder/springboot/lab15/springdatajest/repository/ProductRepository.java index c0ef1f5d..bbaad95e 100644 --- a/lab-15/lab-15-spring-data-jest/src/main/java/cn/iocoder/springboot/lab15/springdatajest/repository/ProductRepository.java +++ b/lab-15/lab-15-spring-data-jest/src/main/java/cn/iocoder/springboot/lab15/springdatajest/repository/ProductRepository.java @@ -5,7 +5,4 @@ import org.springframework.data.elasticsearch.repository.ElasticsearchRepository public interface ProductRepository extends ElasticsearchRepository { - - - } diff --git a/lab-15/pom.xml b/lab-15/pom.xml index c11bee06..948c48e6 100644 --- a/lab-15/pom.xml +++ b/lab-15/pom.xml @@ -13,6 +13,7 @@ pom lab-15-spring-data-jest + lab-15-spring-data-elasticsearch