Elasticsearch 不处理 liquibase 加载的数据

Elasticsearch not working with data loaded by liquibase

我有一个由 JHipster 3.0.0 生成的项目,我使用 elasticsearch 作为搜索引擎。

我正在使用 liquibase 将数据加载到一个 table 中,但我无法使用 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());
}

但我只想做一次,而不是每次应用程序启动时都做。

这些数据是 "static"(30 000 行),所以我想继续使用 sql 文件加载它们。

是否有更好的方法,或者我必须坚持我的方法?

此致

在这里试试我的项目: https://github.com/geraldhumphries/generator-jhipster-elasticsearch-reindexer

这会生成一个服务,允许您将 Elasticsearch 与您的数据库同步。它与您的实施非常相似,但它需要由管理员用户手动 运行 并且可以通过您的 API 访问。在你的情况下,你只需要在你的应用程序 运行ning 时手动 运行 它一次,它将索引你使用 Liquibase 插入的 30,000 行。

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