我已经把一个数据库导入到了elasticsearch中,但是如果以后我对这个数据库进行增删查改,elasticsearch没有改变,老师告诉我用aop的话一个方法就可以解决,请问怎么实现啊?
望采纳,求关注!!!
你老师告诉你的不一定正确;
你老师可能是想者你用aop切入你对数据库中数据执行增删改的方法,同步对es进行更新;
但是这个有很大的局限性,也就是你自己程序的方法可以这么做,如果别人的程序也能进行对这些数据的更改,那么
aop就没啥用;还有就是直接在数据库里面更改,aop更没啥用;
这个问题其实是一个数据同步问题;
实时同步(超低延迟)可以选择canal作为同步工具,监控到数据库数据有变动,就更新es索引;
再加上每天做一个补漏,那么就能提供一个真正的准试试搜索了;
希望可以帮到你.....
因为Spring默认的是事务不提交,你在增删改的方法上面加上@Transaction注解,在Spring配置文件中加上
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
其中dataSource是你自己配置的数据源,就可以控制事务了,在增删改方法加上@Transaction注解,在查询方法上加上@Transaction(readOnly=true,propagation = Propagation.SUPPORTS)注解就可以控制事务了,