【问题标题】:How to Elasticsearch entities not created using API (jhipster)如何使用 API (jhipster) 创建未创建的 Elasticsearch 实体
【发布时间】:2016-01-05 01:04:39
【问题描述】:

使用 Jhipster 和 Postgresql,我创建了一个实体“客户”。当我使用 Angular UI 或 POST 向 API 添加数据到该实体时,我可以使用 UI 上的搜索表单来搜索这些数据。

但是,当我直接在数据库中插入数据时,即使在应用程序重新启动后也无法搜索到数据。搜索仍将(仅)对通过 UI 添加的数据起作用。

我是 elasticsearch 新手,不知道在后端插入数据和使其可用于 elasticsearch 之间是否缺少步骤。请帮忙,如果我需要配置一些东西让弹性搜索在应用程序启动期间从数据库中获取数据。

我对 spring data elasticsearch 的 application-dev.yml 摘录:

    data:
    elasticsearch:
        cluster-name:
        cluster-nodes:
        properties:
            path:
              logs: target/elasticsearch/log
              data: target/elasticsearch/data

【问题讨论】:

  • 请说明您为使用 JHipster 配置 Elasticsearch 所做的一切。你的application.yml 文件长什么样?
  • @Val,我没有更改 application.yml 中与搜索相关的任何配置。我已经在上面原始问题的 yml 文件中添加了 elasticsearch 属性。

标签: elasticsearch jhipster


【解决方案1】:

Elasticsearch 本质上是一个数据存储,这就是 JHipster 与常规 JPA 存储库同时保存到搜索存储库的原因。没有用于在 API 之外对其进行更改的内置重新索引功能。

我编写了一个模块,该模块将生成用于重新索引所有实体的服务。

https://github.com/geraldhumphries/generator-jhipster-elasticsearch-reindexer

【讨论】:

  • 确实是这样。我用于我的用例的一个简单解决方法是使用存储库来提取数据库中的对象并将它们保存到搜索存储库。在单独的评论中添加了我所做的。
  • 是的,这就是我的模块生成的服务的作用。我为自己的项目编写了代码,并在看到这个问题后决定将其创建为一个模块。如果您有任何建议,请打开问题。
  • 类似 List custs = customerRepository.findAll();然后对于每个客户,customerSearchRepository.save(cust)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-19
  • 2017-11-29
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 2015-03-08
  • 2016-08-21
相关资源
最近更新 更多