索引未找到例外

所以,再回来

我有一个JHipster它使用一个生成的项目elasticsearch java嵌入客户端spring boot

我最近对数据集进行了一些重大更改,因为我们已经从不同存储库中迁移了一大堆数据

部署应用程序时,它一切正常,所有SearchRepositories加载没有问题,所有的搜索功能平稳

从测试环境运行时出现问题。 目前还没有改变什么那么到application-test.yml文件,也不到elasticsearch Java的配置文件。

我们有一些更新索引的代码,我已经运行好几次了,它似乎更新了clusters indices ,但是我在受苦的地方是在target文件夹中,它不会创建新的索引

在测试模式下运行时,有12个索引我无法进入目标文件夹,但是,由于标题中提到的错误,只有5个索引在其ResourceIntTest失败

我不想用几百个不相关的代码行来填充这篇文章,所以现在可以包含帮助测试不会失败的解决方法:

当在5个失败的测试用例的initTest中,如果我写下面的行(显然在每个不同的情况下改变类名):

surveyDataQualitySearchRepository.save(surveyDataQualityRepository.findAll());

然后,索引将自行创建,并且测试用例不会失败,但是,这不应该是手动执行的必要条件,应该在部署时调用IndexReinitializer类中的resetIndex方法时创建它

resetIndex:

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

谈到这段代码还允许所有的索引被加载,但因为这用作索引的更新不应该评论,再加上它在一个旧版本,这仍然是指向旧的数据集的应用程序工作正常

所有的帮助将会非常受欢迎,我已经花了近一整天的时间试图了解错误来自哪里,我也非常乐意上传任何可能与愿意帮助的人相关的代码段这里。

编辑按照要求通过注释添加索引重建的代码

@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);
    }

请尝试更新到spring-data-elasticsearch的最新版本

链接地址: http://www.djcxy.com/p/39377.html

上一篇: Index not Found Exception

下一篇: How do MySQL indexes work?