java elasticsearch jhipster spring-data-elasticsearch

java - Índice no encontrado Excepción



elasticsearch jhipster (1)

Intente actualizar a la última versión de spring-data-elasticsearch

Entonces, de vuelta

Tengo un proyecto generado por JHipster que usa un cliente JHipster elasticsearch incorporado en spring boot .

Recientemente realicé algunos cambios importantes en los conjuntos de datos, ya que hemos estado migrando una gran cantidad de datos de diferentes repositorios

Al implementar la aplicación, todo funciona bien, todos los SearchRepositories búsqueda se cargan sin problemas y todas las capacidades de búsqueda se SearchRepositories sin problemas.

Los problemas surgen cuando se ejecuta desde el entorno de prueba. No ha habido ningún cambio en el archivo application-test.yml ni en el archivo de configuración application-test.yml java.

Tenemos un código que actualiza los índices y lo he ejecutado varias veces, parece actualizar los clusters indices , pero cuando sufro está en la carpeta de target , simplemente no crea los nuevos índices.

Hay 12 índices que no puedo obtener en la carpeta de destino cuando se ejecuta en modo de prueba, sin embargo, solo 5 de ellos fallan en su ResourceIntTest debido al error mencionado en el título.

No quiero llenar esta publicación con cientos de líneas de código irrelevantes, por lo que basta por ahora incluir la solución alternativa que ayuda a las pruebas a no fallar:

Cuando initTest en la initTest de los 5 casos de prueba initTest , si escribo la siguiente línea (obviamente cambiando el nombre de la clase en cada caso diferente):

surveyDataQualitySearchRepository.save(surveyDataQualityRepository.findAll());

A continuación, el índice se creará solo y el caso de prueba no fallará; sin embargo, esto no debería ser necesario hacerlo manualmente, debería crearse cuando se resetIndex método resetIndex en la clase IndexReinitializer en la implementación.

resetIndex:

@PostConstruct public void resetIndex() { long t = currentTimeMillis(); elasticsearchTemplate.deleteIndex("_all"); t = currentTimeMillis() - t; logger.debug("ElasticSearch indexes reset in {} ms", t); }

Comentar este fragmento de código también permite cargar todos los índices, pero no debe comentarse, ya que sirve como un actualizador para los índices, además funciona bien en una versión anterior de la aplicación que aún apunta al antiguo conjunto de datos.

Toda la ayuda será bienvenida, he estado en este casi un día completo tratando de entender de dónde viene el error, también estoy más que feliz de cargar cualquier fragmento de código que pueda ser relevante para cualquiera que esté dispuesto a ayudar aquí.

EDITAR Para agregar código para la reconstrucción de índices según lo solicitado a través de comentarios

@Test public void synchronizeData() throws Exception{ resetIndex(); activePharmaIngredientSearchRepository.save(activePharmaIngredientRepository.findAll()); countrySearchRepository.save(countryRepository.findAll()); dosageUnitSearchRepository.save(dosageUnitRepository.findAll()); drugCategorySearchRepository.save(drugCategoryRepository.findAll()); drugQualityCategorySearchRepository.save(drugQualityCategoryRepository.findAll()); formulationSearchRepository.save(formulationRepository.findAll()); innDrugSearchRepository.save(innDrugRepository.findAll()); locationSearchRepository.save(locationRepository.findAll()); manufacturerSearchRepository.save(manufacturerRepository.findAll()); outletTypeSearchRepository.save(outletTypeRepository.findAll()); publicationSearchRepository.save(publicationRepository.findAll()); publicationTypeSearchRepository.save(publicationTypeRepository.findAll()); qualityReferenceSearchRepository.save(qualityReferenceRepository.findAll()); reportQualityAssessmentAssaySearchRepository.save(reportQualityAssessmentAssayRepository.findAll()); //rqaaQualitySearchRepository.save(rqaaQualityRepository.findAll()); rqaaTechniqueSearchRepository.save(rqaaTechniqueRepository.findAll()); samplingTypeSearchRepository.save(samplingTypeRepository.findAll()); //surveyDataQualitySearchRepository.save(surveyDataQualityRepository.findAll()); surveyDataSearchRepository.save(surveyDataRepository.findAll()); techniqueSearchRepository.save(techniqueRepository.findAll()); tradeDrugApiSearchRepository.save(tradeDrugApiRepository.findAll()); tradeDrugSearchRepository.save(tradeDrugRepository.findAll()); publicationDrugTypesSearchRepository.save(publicationDrugTypesRepository.findAll()); wrongApiSearchRepository.save(wrongApiRepository.findAll()); } private void resetIndex() { long t = currentTimeMillis(); elasticsearchTemplate.deleteIndex("_all"); t = currentTimeMillis() - t; logger.debug("ElasticSearch indexes reset in {} ms", t); }