我有一个由JHipster 3.0.0生成的项目,并且正在使用elasticsearch作为搜索引擎.
我正在使用liquibase将数据加载到一个表中,但是我无法使用elasticsearch查询这些数据,因为我从未使用由liquibase加载的数据调用DataSearchRepository上的save()方法.
这就是我将数据加载到liquibase xml文件中的方式:
<sqlFile dbms="postgresql"
encoding="utf8"
path="../data.sql"
relativeToChangelogFile="true"/>
现在,我加载所有数据,然后在应用程序启动时使用DataSearchRepository保存它们:
@PostConstruct
private void init() {
dataSearchRepository.save(dataRepository.findAll());
}
但是我只想执行一次,而不是每次应用程序启动时都这样做.
这些数据是“静态的”(3万行),所以这就是为什么我想继续使用sql文件加载它们的原因.
有更好的方法做到这一点,还是我必须坚持下去?
问候
解决方法:
在这里尝试我的项目:
https://github.com/geraldhumphries/generator-jhipster-elasticsearch-reindexer
这将生成一项服务,使您可以将Elasticsearch与数据库同步.它与您的实现非常相似,但是需要由管理员用户手动运行,并且可以通过您的API进行访问.对于您的情况,您只需要在应用程序运行时手动运行一次,它将为您使用Liquibase插入的30,000行编制索引.
您可以修改生成的服务以删除所有其他实体的索引.有一项计划的功能,可让您忽略某些实体.