Заполните изменения непосредственно для упругого поиска - PullRequest
0 голосов
/ 24 ноября 2018

Я пишу небольшое демонстрационное приложение и использовал jHipster для генерации стека.Поскольку я новичок в веб-разработке, я столкнулся с некоторыми проблемами, особенно с упругим поиском.

Всякий раз, когда я изменяю данные сущности в моем приложении, измененные данные не отражаются в поисках, выполняемых с использованием эластичного поиска.

Насколько я понимаю, если изменения сущностей были сохранены в соответствующем поисковом хранилище, это должно быть отражено в индексах ES.Я ошибаюсь по этому поводу?

Живой пример:

@Override
public Client save(Client client) {
    log.debug("Request to save Client : {}", client);
    Client result = clientRepository.save(client);
    clientSearchRepository.save(result);
    return result;
}

Это сохранило обновленную информацию в моей базе данных MySQL, пока все хорошо.Однако, допустим, я отредактировал дату рождения пользователя и сохранил ее.Всякий раз, когда я ищу что-то, содержащее этот клиент, «старая» дата рождения все еще отображается, пока я не выполню переиндексацию репозиториев ES.

Можно ли использовать какой-либо слушатель сущностей (или что-то еще), который напрямую заполняет измененные данные?

Спасибо за любые указатели.

1 Ответ

0 голосов
/ 01 декабря 2018

Вы должны использовать тот же поиск репозитория в вашем методе обновления.Приведенный выше код выглядит хорошо, если ваша конфигурация ElasticSearch верна, он должен обновить индекс при создании / обновлении сущности.

Используйте генератор сущностей JHipster и включитеasticsearch, и он должен работать из коробки.

Вы получите что-то вроде этого в вашем ClientResource для создания новых клиентов:

@PostMapping("/clients")
@Timed
public ResponseEntity<Client> createClient(@Valid @RequestBody Client client) throws URISyntaxException {

    Client result = clientRepository.save(client);
    clientSearchRepository.save(result);

И что-то вроде этого для редактирования ваших клиентов:

    @PutMapping("/clients")
    @Timed
    public ResponseEntity<Client> updateClient(@Valid @RequestBody Client client) throws URISyntaxException {

    Client result = clientRepository.save(client);
    clientSearchRepository.save(result);

Попробуйте сгенерировать новый пустой проект JHipster ивключив объявление ElasticSearch, вы увидите, что оно работает так, как вы предполагаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...