2017-05-16 60 views
7

所以,再次指標未發現異常

我有一個使用嵌入在的elasticsearchjava客戶端JHipster生成項目。

我最近做的數據集,一些重大變化,因爲我們已經遷移數據從不同的存儲庫

一個全新的一堆當部署這一切工作正常的應用程序,所有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); 
    } 
+1

都涉及到一個實體的ES指標要求,還是他們分別創建? 'resetIndex'方法刪除嵌入式elasticsearch中的所有索引(將數據存儲在目標中) –

+0

索引與域中的所有實體相關。我並不完全理解嵌入式elasticsearch中發生的所有事情,因此我無法完全解釋resetIndex是如何工作的,但我確切知道它不是索引不是自己創建的罪魁禍首,因爲代碼會刪除所有指數,所以如果這是罪魁禍首,我不會面臨只有一些指數 – Steven

+2

我有一個類似的問題。在正常運行配置下運行帶有更新的spring-data-es可以正常運行,但在運行測試時不會創建索引。調試es客戶端我發現索引的兩個映射關閉了。一個映射是我的,另一個我不知道它來自哪裏。我的建議是:如果你有一個解決方法就是跟着它,讓測試工作並繼續前進,那麼找出發生的事情是不值得的。我失去了2天:(我認爲唯一的其他選擇是在一個簡單的項目中重現錯誤,並向spring-data-es github報告並鏈接你的測試回購。 – Ceekay

回答

3

請嘗試更新到彈簧數據elasticsearch的最新版本