0
我有一个奇怪的效果,即对索引的搜索返回我之前刚刚删除的文档。 “get”可以正常工作。难道我做错了什么?搜索有没有限制(client.prepareSearch("test").execute(...)
)搜索删除后返回文档
我跑了 “ESIntegTestCase” 有弹性的搜索5.0
@Test
public void testES() throws Exception {
String index = "test";
String type = "event";
String doc = "{\"Key0\":\"Val0\"}";
createIndex(index);
Semaphore sem = new Semaphore(0);
client().prepareIndex(index, type).setSource(doc).execute(handleOrError(postResp -> {
client().prepareGet(postResp.getIndex(), postResp.getType(), postResp.getId()).execute(handleOrError(getResp -> {
printGR(getResp);
client().prepareSearch(postResp.getIndex()).execute(handleOrError(searchResponse -> {
printSR(searchResponse);
client().prepareDelete(postResp.getIndex(), postResp.getType(), postResp.getId()).execute(handleOrError(resp -> {
printDR(resp);
client().prepareGet(postResp.getIndex(), postResp.getType(), postResp.getId()).execute(handleOrError(getResp2 -> {
printGR(getResp2);
client().prepareSearch(postResp.getIndex()).execute(handleOrError(searchResponse2 -> {
printSR(searchResponse2);
sem.release();
}));
}));
}));
}));
}));
}));
sem.acquire();
}
打印:
1) GetResponse: {"_index":"test","_type":"events","_id":"AVgv1NHPHZ0vJaA-eRhJ","_version":1,"found":true,"_source":{"Key0":"Val0"}}
2) SearchResponse:{"took":2,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"test","_type":"events","_id":"AVgv1NHPHZ0vJaA-eRhJ","_score":1.0,"_source":{"Key0":"Val0"}}]}}
3) DeleteResponse: DeleteResponse[index=test,type=events,id=AVgv1NHPHZ0vJaA-eRhJ,version=2,result=deleted,shards="_shards"{"total":2,"successful":2,"failed":0}]
4) GetResponse: {"_index":"test","_type":"events","_id":"AVgv1NHPHZ0vJaA-eRhJ","found":false}
5) SearchResponse:{"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"test","_type":"events","_id":"AVgv1NHPHZ0vJaA-eRhJ","_score":1.0,"_source":{"Key0":"Val0"}}]}}
谢谢!更改删除的刷新策略可解决问题。 – Fabian