elasticsearch IT 保存等待
elasticsearch IT save wait
我想使用 elasticsearch 进行集成测试,在尝试进行测试以查看对象是否已成功保存和删除时,我注意到 ES 没有立即为文档编制索引,但不得不稍等片刻(比如1 秒),有没有办法告诉我的保存方法立即建立索引?
这是我的测试:
@Test
public void SurveySaveDelete(){
Object lock = new Object();
synchronized (lock) {
Survey survey = new Survey();
survey.setEvaluated("evaluated");
survey.setEvaluator("evaluator");
survey.setTimestamp("2017-1-30");
Survey returnedSaveSurvey = new Survey();
Survey foundSurvey = new Survey();
returnedSaveSurvey = elasticsearchSurveyRepository.saveSurvey(survey);
try {
lock.wait(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
foundSurvey = elasticsearchSurveyRepository.findSurvey("evaluator", "evaluated", "2017-1-30");
assertEquals("evaluated", foundSurvey.getEvaluated());
assertEquals("evaluator", foundSurvey.getEvaluator());
assertEquals("2017-1-30", foundSurvey.getTimestamp());
assertEquals("evaluated", returnedSaveSurvey.getEvaluated());
assertEquals("evaluator", returnedSaveSurvey.getEvaluator());
assertEquals("2017-1-30", returnedSaveSurvey.getTimestamp());
boolean wasDeleted;
wasDeleted = elasticsearchSurveyRepository.deleteSurvey("evaluator", "evaluated", "2017-1-30");
assertEquals(true, wasDeleted);
}
}
如您所见,我使用了一个锁定对象让我的测试稍等片刻,但我不确定是否有其他方法可以做到这一点
(我正在学习如何编码,请耐心等待 xD)
这是我的保存方法:
@Override
public Survey saveSurvey(Survey survey) {
Index index = new Index.Builder(survey).index(surveyIndexName).type(surveyTypeName).build();
try {
client.execute(index);
return survey;
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
您可以在插入后手动刷新索引。
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html
client.admin().indices().prepareRefresh(indices).execute().get()
您可以强制刷新 RefreshRequestBuilder
我想使用 elasticsearch 进行集成测试,在尝试进行测试以查看对象是否已成功保存和删除时,我注意到 ES 没有立即为文档编制索引,但不得不稍等片刻(比如1 秒),有没有办法告诉我的保存方法立即建立索引?
这是我的测试:
@Test
public void SurveySaveDelete(){
Object lock = new Object();
synchronized (lock) {
Survey survey = new Survey();
survey.setEvaluated("evaluated");
survey.setEvaluator("evaluator");
survey.setTimestamp("2017-1-30");
Survey returnedSaveSurvey = new Survey();
Survey foundSurvey = new Survey();
returnedSaveSurvey = elasticsearchSurveyRepository.saveSurvey(survey);
try {
lock.wait(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
foundSurvey = elasticsearchSurveyRepository.findSurvey("evaluator", "evaluated", "2017-1-30");
assertEquals("evaluated", foundSurvey.getEvaluated());
assertEquals("evaluator", foundSurvey.getEvaluator());
assertEquals("2017-1-30", foundSurvey.getTimestamp());
assertEquals("evaluated", returnedSaveSurvey.getEvaluated());
assertEquals("evaluator", returnedSaveSurvey.getEvaluator());
assertEquals("2017-1-30", returnedSaveSurvey.getTimestamp());
boolean wasDeleted;
wasDeleted = elasticsearchSurveyRepository.deleteSurvey("evaluator", "evaluated", "2017-1-30");
assertEquals(true, wasDeleted);
}
}
如您所见,我使用了一个锁定对象让我的测试稍等片刻,但我不确定是否有其他方法可以做到这一点 (我正在学习如何编码,请耐心等待 xD)
这是我的保存方法:
@Override
public Survey saveSurvey(Survey survey) {
Index index = new Index.Builder(survey).index(surveyIndexName).type(surveyTypeName).build();
try {
client.execute(index);
return survey;
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
您可以在插入后手动刷新索引。
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html
client.admin().indices().prepareRefresh(indices).execute().get()
您可以强制刷新 RefreshRequestBuilder