1.引入依赖
在引入依赖的时候,需要注意实际使用es版本与代理版本的对应关系,以及与spring版本的兼容性问题。
这里使用的是es的7.17.27版本 对应spring 2.5.9
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.5.9</spring-boot.version>
</properties>
2.使用例子:
①实体类
创建实体类Biz,其中@Document对应es中的索引名称(类似于mysql中的表的结构),@field表示文档类型(类似mysql中的字段)
@Document(indexName = "biz")
@Data
public class biz {
@Id
@Field(store=true, index = false,type = FieldType.Integer)
private Integer id;
//模糊匹配
@Field(store=true, type = FieldType.Text, analyzer = "ik_max_word")
private String ProjectName;
//精确查找
@Field(store=true, type = FieldType.Keyword)
private String Industry;
@Field(store=true, type = FieldType.Keyword)
private String regions;
@Field(store=true, type = FieldType.Keyword)
private String announcementType;
}
②Repository接口
继承ElasticsearchRepository类,同时使用对应的实体类和主键类型作为泛型
@Repository
public interface BizRepository extends ElasticsearchRepository<biz,Integer> {
}
3.业务代码的时候
在业务代码中,只需要自动注入Repository接口。从而调用接口的方法即可开启使用啦。这里简单实现了一个分批处理的逻辑。
@SpringBootTest
class EsDemoApplicationTests {
@Autowired
private dao bizmapper;
@Autowired
private BizRepository bizrepository;
@Test
void contextLoads() {
//分批获取
int batchSize=99;
int start=1;
while(true){
List<BizMysql> list=new ArrayList<>();
QueryWrapper<BizMysql> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id","project_name","regions","industries","announcement_type");
queryWrapper.between("id", start, start+batchSize);
queryWrapper.orderByAsc("id");
list=bizmapper.selectList(queryWrapper);
if(list==null&&list.size()==0){
break;
}
// System.out.println(list);
for(BizMysql bizmq : list){
System.out.println(bizmq);
biz sa=new biz();
sa.setId(bizmq.getId());
sa.setProjectName(bizmq.getProjectName());
sa.setRegions(bizmq.getRegions());
sa.setIndustry(bizmq.getIndustries());
sa.setAnnouncementType(bizmq.getAnnouncementType());
bizrepository.save(sa);
}
start+=batchSize+1;
}
System.out.println(start);
}
}
补充:
结合之前的mybatis-plus的使用就可以简单实现一个从mysql拷贝数据到es的代码。但是有些推荐使用datax工具来进行数据的同步、也有大佬推荐使用cannel来实现数据的同步。后续试过再发布教程。

987

被折叠的 条评论
为什么被折叠?



