java-Elasticsearch无法使用由liquibase加载的数据

我有一个由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行编制索引.

您可以修改生成的服务以删除所有其他实体的索引.有一项计划的功能,可让您忽略某些实体.

上一篇:java-使用Liquibase和Spring合并DB中的值


下一篇:配置文件和数据库配置选择