Sping Boot 整合ElasticSearch踩雷集合

SpringBoot项目整合ES坑

一、 整合坑

在这里插入图片描述
在SpringBoot集成ES的时候如果需要使用到ElasticsearchRepository,当ElasticsearchRepository在启动类目录下如图所示,即在open目录下时会自动扫描到,无需额外操作。若目录更改放在另一个模块下则需要配置@EnableElasticsearchRepositories路径为ElasticsearchRepository所在目录。
就是这个坑!坑了小编几个小时 每次都被扫描成为Mybatis文件
在这里插入图片描述

二、 数据映射坑

怀着满心欢喜解决了扫描的问题,没想到又踩入一个大坑 当时心情是这样
在这里插入图片描述
在mysql 数据同步到ES的时候因为Date 时间类型不匹配又报错
直接上改正的代码直接自定义时间格式! ES定义的都是啥玩意 救命!

@Field(type = FieldType.Date, format = DateFormat.custom,name = "insert_time",
        pattern = "yyyy-MM-dd HH:mm:ss||date_time_no_millis||strict_date_optional_time||epoch_millis")
private LocalDateTime insertTime;

接上错误代码

@Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second,name = "insert_time")
private LocalDateTime insertTime;

三、 Logstash数据同步mysql-ES坑

好不容易数据同步完,开始了自己心心念念的查询,没想到。。
在这里插入图片描述
还是自己太年轻的

![在这里插入图片描述](https://img-blog.csdnimg.cn/4e0083c534e0490bb19978e7d1f3408d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xfOTk0NTcyMjgxX0xZQQ==,size_16,color_FFFFFF,t_7
诶 一查null 在这里插入图片描述
一顿操作猛如虎 马上定位问题
在这里插入图片描述
如图所示,在实体类与ES索引映射的时候字段名字和数据库查询出来的名字不相同那么,Logstash会自动帮你新建一个字段名称,如果你在@Field 不加name属性那么ES出映射出来的索引就是你实体类定义的属性名字。当你用ElasticsearchRepositoryfindByUserId或者诸如此类多的单词的字段就会发现 诶 null就是查不到!!!
在这里插入图片描述

四、分页坑

要是你发现诶上述准备都做完了你就可以查到数据了么
在这里插入图片描述
不不不 你还是太年轻了 当你从List转换成使用Pageable准备分页的时候嘿嘿
null!!! 真不错
这个时候直接如图
在这里插入图片描述
他默认是从0开始 但是我们习惯是从1开始所以 又null了
最后终于查到了我朝思暮想的数据

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/L_994572281_LYA/article/details/119596905