所以,再次指標未發現異常
我有一個使用嵌入在的elasticsearch
java
客戶端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);
}
都涉及到一個實體的ES指標要求,還是他們分別創建? 'resetIndex'方法刪除嵌入式elasticsearch中的所有索引(將數據存儲在目標中) –
索引與域中的所有實體相關。我並不完全理解嵌入式elasticsearch中發生的所有事情,因此我無法完全解釋resetIndex是如何工作的,但我確切知道它不是索引不是自己創建的罪魁禍首,因爲代碼會刪除所有指數,所以如果這是罪魁禍首,我不會面臨只有一些指數 – Steven
我有一個類似的問題。在正常運行配置下運行帶有更新的spring-data-es可以正常運行,但在運行測試時不會創建索引。調試es客戶端我發現索引的兩個映射關閉了。一個映射是我的,另一個我不知道它來自哪裏。我的建議是:如果你有一個解決方法就是跟着它,讓測試工作並繼續前進,那麼找出發生的事情是不值得的。我失去了2天:(我認爲唯一的其他選擇是在一個簡單的項目中重現錯誤,並向spring-data-es github報告並鏈接你的測試回購。 – Ceekay