# springboot-demo
基于springboot后台框架,涉及技术,通用mapper,shiro,mysql,redis
## es模块
最近在学习es,起码要先有个es环境吧,然后再是整合到代码中使用一下,毕竟只有实践才会有深刻的记忆,这就是所谓的经验啊,下面开始吧,本文分两部分,第一部分配置es环境,第二部分整合到springboot中进行简单的操作,本人也是初次学习,如有错误欢迎指出修正,
本文示例代码不严谨,仅供参考
一、 docker 安装es
1、 拉取镜像
```
# 搜索镜像
docker search elasticsearch
# 拉取镜像
docker pull elasticsearch
```
2、创建本地映射文件,我的本地es映射主目录是/docker/es
```
cd /docker/es
mkdir data
mkdir plugins
mkdir config
cd config
vim es.yml
```
3、es.yml文件内容如下
```
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: localhost
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
```
4、创建并启动容器
```
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 -p 5601:5601 --restart=always -v /docker/es/config/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /docker/es/plugins1:/usr/share/elasticsearch/plugins -v /docker/es/data1:/usr/share/elasticsearch/data --name my_es elasticsearch
# 命令解析
-e 指定运行内存
-d 后台运行
-p 指定端口
--restart=always 启动docker自动启动容器
-v 指定映射文件
--name 容器名称
最后的elasticsearch是刚才拉取的镜像名称
```
5、浏览器插件访问es,telnet9200可以通说明都可以说明搭建成功, http://127.0.0.1:9200/
二、 整合springboot里面去
1、pom.xml
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
```
2、application.yml
```
spring:
data:
elasticsearch:
cluster-name: elasticsearch-cluster
cluster-nodes: 127.0.0.1:9300
repositories:
enabled: true
```
3、 ElasticSearchConfig
```
@SpringBootConfiguration
public class ElasticSearchConfig {
@PostConstruct
void init() {
System.setProperty("es.set.netty.runtime.available.processors", "false");
}
}
```
4、 bean
```
ESDocument
@Data
@Document(indexName = "poms", type = "content")
public class ESDocument {
@Id
private String id;
@Field(analyzer = "ik_smart", searchAnalyzer = "ik_smart")
private String name;
private String projectId;
public ESDocument(String id, String name, String projectId) {
this.id = id;
this.name = name;
this.projectId = projectId;
}
public ESDocument() {
}
}
/**
* @Document 作用在类,标记实体类为文档对象,一般有两个属性
* indexName:对应索引库名称
* type:对应在索引库中的类型
* shards:分片数量,默认5
* replicas:副本数量,默认1
* @Id 作用在成员变量,标记一个字段作为id主键
* @Field 作用在成员变量,标记为文档的字段,并指定字段映射属性:
* type:字段类型,是枚举:FieldType,可以是text、long、short、date、integer、object等
* text:存储数据时候,会自动分词,并生成索引
* keyword:存储数据时候,不会分词建立索引
* Numerical:数值类型,分两类
* 基本数据类型:long、integer、short、byte、double、float、half_float
* 浮点数的高精度类型:scaled_float
* 需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。
* Date:日期类型
* elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。
* index:是否索引,布尔类型,默认是true
* store:是否存储,布尔类型,默认是false
* analyzer:分词器名称,这里的ik_max_word即使用ik分词器
*
*/
```
5、DocumentSearchService
```
void save(ESDocument esDocument);
void delete(String id);
void getById(String id);
void getByName(String name,String projectId);
```
6.DocumentSearchServiceImpl
```
@Autowired
private DocumentSearchRepository documentSearchRepository;
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
@Override
public void save(ESDocument esDocument) {
ESDocument save = documentSearchRepository.save(esDocument);
System.out.println(save.toString());
}
@Override
public void delete(String id) {
documentSearchRepository.deleteById(id);
}
@Override
public void getById(String id) {
ESDocument esDocument = documentSearchRepository.findById(id).orElse(new ESDocument());
System.out.println(esDocument.toString());
}
@Override
public void getByName(String name, String projectId) {
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchQuery("name",name)).withQuery(matchQuery("projectId",projectId)).build();
List<ESDocument> esDocuments = elasticsearchTemplate.queryForList(searchQuery, ESDocument.class);
esDocuments.forEach(e-> System.out.println(e.toString()));
}
```
7、DocumentSearchRepository
```
@Repository
public interface DocumentSearchRepository extends ElasticsearchRepository<ESDocument,String> {
}
```
8、test
```
@RunWith(SpringRunner.class)
@SpringBootTest
public class EsTests {
@Autowired
private DocumentSearchService documentSearchService;
@Test
public void save() {
documentSearchService.save(new ESDocument(UUID.randomUUID().toString(),"name1","1"));
}
@Test
public void getById(){
documentSearchService.getById("98c717e2-0e17-4887-86f6-e9cd347f97f7");
}
@Test
public void getByName(){
documentSearchService.getByName("name1","1");
}
@Test
public void delete(){
documentSearchService.delete("98c717e2-0e17-4887-86f6-e9cd347f97f7");
}
}
```
9、到这基本整合就结束了,展示了一个增删查,没有修改,修改本人暂时也没有看。,待后续学习继续分享经验吧,下面说一下整合过程遇到的坑
### 坑1
##### 报错信息
```
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190)
at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
基于springboot后台框架,涉及技术,通用mapper,shiro,mysql,redis.zip (589个子文件)
mvnw.cmd 7KB
mvnw.cmd 7KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
mvnw.cmd 6KB
fdfs_client.conf 412B
login.css 2KB
login.css 2KB
style.css 2KB
docker_push 325B
Dockerfile 2KB
test.functions 2KB
version.functions 1KB
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 395B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 333B
.gitignore 65B
login.html 2KB
login.html 761B
login.html 701B
login.html 694B
hello.html 386B
home.html 260B
index.html 238B
index.html 238B
Test.html 236B
maven-wrapper.jar 50KB
maven-wrapper.jar 50KB
maven-wrapper.jar 50KB
maven-wrapper.jar 50KB
maven-wrapper.jar 50KB
maven-wrapper.jar 50KB
maven-wrapper.jar 50KB
maven-wrapper.jar 50KB
maven-wrapper.jar 47KB
maven-wrapper.jar 47KB
maven-wrapper.jar 47KB
maven-wrapper.jar 47KB
EncodingDetect.java 171KB
FileController.java 14KB
FileControllerTest.java 13KB
FileUtil.java 10KB
CustomLicenseManager.java 9KB
RabbitUtils.java 7KB
SearchServiceImpl.java 7KB
InitElasticIndexRunner.java 7KB
FileUtils.java 7KB
RabbitConfig.java 7KB
AskLeaveTest_7x_full.java 7KB
JedisUtils.java 6KB
MyVolumeWrapper.java 6KB
DecryptFieldInterceptor.java 6KB
Test.java 6KB
AesUtils.java 6KB
MQClientMonitor.java 5KB
IndexServiceTest.java 5KB
CodeGenerator.java 5KB
共 589 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 地级市收支明细数据集2003-2023年.xlsx
- 基恩士PLC KV8000+XH16EC总线控制,全ST程序实例,本人自己开发全程序无加密,公司级框架,功能齐全,提供项目源码框
- 西门子200smart换热站程序西门子200smart换热站程序 有 变量表 源程序代码 CAD图纸 威伦屏 程序
- 永磁同步电机pmsm二阶全局快速终端滑模控制matlab模型 自己做的永磁同步电机gftsmc控制 控制思路如图2 优点在于
- 图腾柱无桥PFC,平均电流控制 环路建模然后设计出电压环和电流环补偿网络,零极点放置 PLECS、psim和simulink
- MATLAB代码:计及源-荷双重不确定性的虚拟电厂日前鲁棒优化调度 关键词:虚拟电厂 微网调度 鲁棒调度 源荷不确定性 日前经济
- VisualBasic语言教程、案例、相关项目.docx
- DIP/NLP期末大作业-基于ClipCap实现中文图像特征到文本特征映射网络源代码+文档说明(一个项目可以用两个作业)
- 泰坦尼克号幸存者预测【Python代码&文档说明】大作业
- 串口传输上位机!!!!
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功