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