文章目录
- 狂神说-Elasticsearch 7.6入门学习笔记
- Windows Elasticsearch IK分词器插件启动报错
- Elasticsearch的ik分词器自定义字典myDict.dic的编码格式需要为UTF-8,否则无效
- Elasticsearch使用term查询无数据返回的原因
- Elasticsearch如果没给映射,字段默认使用standard映射
- Elasticsearch SQL说明
- ElasticSearch SQL转DSL
- ElasticSearch关联查询
- ElasticSearch的msearch,
- ElasticSearch多个字段聚合统计
- Elasticsearch Painless Script入门教程
- Elasticsearch 查询模板(Mustache模板引擎)
- Windows计算文件名的Md5值
- TortoiseSVN 远程仓库路径更换
- IDEA 远程仓库路径更换
- Git修改分支名
- Git回退到指定版本(两种方法验证通过)
- 方法一
- 方法二
- EasyExcel官方必读文档(包括版本选择)
- EasyExcel部分字段为什么没法读取或者写入
- EasyExcel读取动态列
- MySQL中的unix_timestamp(时间字符)、from_unixtime(数字类型)
- 抽象类(或者接口)是无法被Spring实例化的,因此无法添加@Service 或 @Componet 注解
- Spring 循环依赖解决方法
- Java jsch在Linux中获取sftp连接时失败
狂神说-Elasticsearch 7.6入门学习笔记
狂神说-Elasticsearch 7.6入门学习笔记
Windows Elasticsearch IK分词器插件启动报错
错误如下:
java.security.Acces ControlException: access denied (\ik\config\IKAnalyzer.cfg.xml" "read")
原因:
D:\Program Files文件夹下的所有文件默认都是只读权限。
解决方法:
Elasticsearch不要安装在 Program Files 、Program Files (x86) 这些目录下。
参考链接
Elasticsearch的ik分词器自定义字典myDict.dic的编码格式需要为UTF-8,否则无效
Elasticsearch使用term查询无数据返回的原因
- term查询适合查询number、date、keyword
- term查询text字段,需要映射支持keyword
参考链接
Elasticsearch如果没给映射,字段默认使用standard映射
建议中文使用ik_max_word映射
Elasticsearch SQL说明
参考链接
ElasticSearch SQL转DSL
官方链接、参考链接
ElasticSearch关联查询
百家号、知乎
ElasticSearch的msearch,
msearch支持多索引uion联合查询。
msearch的语法如下:
GET /_msearch
查询一条数据它需要两个对象,第一个设置index和type,第二个设置查询语句。查询语句和search相同。
如果只是查询一个index,我们可以在url中带上index,语法如下:
GET /索引名/_msearch
请求示例1:
GET /repetition-result/_msearch
{}
{"query" : {"term" : {"achievementId" : "1"}}, "size" : 3}
{}
{"query" : {"term" : {"contrastId" : "1"}}, "size" : 3}
请求示例2:
GET /repetition-result/_msearch
{}
{"query" : {"term" : {"achievementId" : "1"}}, "size" : 3}
{"index": "repetition-result-test"}
{"query" : {"term" : {"contrastId" : "3"}}, "size" : 3}
ElasticSearch多个字段聚合统计
"cardinality": {"script": {"lang": "painless","source": "doc['achievementId'].value + doc['contrastId'].value"}
}
参考链接
Elasticsearch Painless Script入门教程
参考链接
Elasticsearch 查询模板(Mustache模板引擎)
参考链接
参考链接
参考链接
Windows计算文件名的Md5值
certutil -hashfile 文件名 MD5
C:\>certutil -hashfile E:\Downloads\ZGGX-ZF-CMND-2023200015.xlsx MD5
TortoiseSVN 远程仓库路径更换
- 右键项目文件夹 TortoiseSVN => Relocate
- 在 To URL 中输入新的仓库地址点击 OK
- 根据提示填入账户名密码即可
IDEA 远程仓库路径更换
Git修改分支名
1、修改本地分支名称
2、在本地将远程分支删除
3、将改名后的本地分支推送到远程仓库
参考链接
Git回退到指定版本(两种方法验证通过)
方法一
1、查询commintId
IDEA界面、命令git log、远程仓库页面都可以
2、git reset --hard commintId
3、git push -f
必须用这个命令强推 或者 用图形界面强推。
否则会报下面的弹窗:
方法二
1、找到Git对应日志 -> 建立分支
2、push提交代码(支持修改代码后提交)
3、修改分支名(参考:Git修改分支名)
EasyExcel官方必读文档(包括版本选择)
EasyExcel官方必读文档(包括版本选择)
EasyExcel部分字段为什么没法读取或者写入
使用了lombok的@Accessors(chain = true) ,无法被Cglib读取
建议使用@Builder来替换@Accessors(chain = true)
EasyExcel读取动态列
上面的截图有两个错误:① 动态列需要加上@ExcelIgnore注解(或者实体类加@ExcelIgnoreUnannotated) ② context.readStringCell(i)方法不存在
解决参考代码(验证通过):
// 动态列处理
List<String> dynamicDataList = new ArrayList<>();
for(int i = 5; i < readRowHolder.getCellMap().size(); i++){ReadCellData ReadCellData = (ReadCellData)readRowHolder.getCellMap().get(i);if(StringUtils.isNotBlank(ReadCellData.getStringValue())){dynamicDataList.add(ReadCellData.getStringValue());}
}
MySQL中的unix_timestamp(时间字符)、from_unixtime(数字类型)
from_unixtime()把long类型时间戳格式化
参考链接
抽象类(或者接口)是无法被Spring实例化的,因此无法添加@Service 或 @Componet 注解
Spring 循环依赖解决方法
启动项目报下面的错:
The dependencies of some of the beans in the application context form a cycle:testController (field private com.aspire.achievement.repetition.service.RepetitionAbilityService com.aspire.achievement.repetition.controller.TestController.repetitionAbilityService)
┌─────┐
| repetitionAbilityServiceImpl (field private com.aspire.achievement.repetition.service.RepetitionTaskService com.aspire.achievement.repetition.service.impl.RepetitionAbilityServiceImpl.repetitionTaskService)
↑ ↓
| repetitionTaskServiceImpl (field private com.aspire.achievement.repetition.factory.BlockQueueFactory com.aspire.achievement.repetition.service.impl.RepetitionTaskServiceImpl.blockQueueFactory)
↑ ↓
| blockQueueFactory (field private com.aspire.achievement.repetition.service.RepetitionAbilityService com.aspire.achievement.repetition.factory.BlockQueueFactory.repetitionAbilityService)
└─────┘Action:Relying upon circular references is discouraged and they are prohibited by default. Update your application to remove the dependency cycle between beans. As a last resort, it may be possible to break the cycle automatically by setting spring.main.allow-circular-references to true.
解决方法:
1、代码中主动取消循环依赖
2、增加允许循环依赖的配置
spring:main:allow-circular-references: true
3、添加延迟加载@Lazy注解 (未成功)
参考链接
Java jsch在Linux中获取sftp连接时失败
在本地Windows操作远程sftp服务器,完全没问题。但是部署到Linux服务器时,出现下面的错误:
Session.connect: java.security.InvalidAlgorithmParameterException:
DH key size must be multiple of 64, and can only range from 512 to 2048 (inclusive).
The specific key size 3072 is not supported
本地和linux都是jdk 1.8的环境。
经排查,发现项目引入的jsch依赖如下:
<dependency><groupId>org.netbeans.external</groupId><artifactId>com-jcraft-jsch</artifactId><version>RELEASE180</version>
</dependency>
解决方法:
1、使用jdk 1.8以上的环境
2、更换jsch依赖(经测试0.1.54也可以)
<dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.54</version>
</dependency>
注:如果0.1.52版本在windows环境中运行会报下面的错:
com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Read
解决方法:更换jsch依赖为0.1.54即可。
参考链接
参考链接