Я хотел получить последние записи, чей sequenceStatus имеет значение «OB ORDER COMPLETE», поэтому я использовал matchQuery и отсортировал метку времени в порядке DESC
.Затем я возвращаю первый результат.
После печати первых 10 результатов я обнаружил, что первый результат - это не последние записи, как я ожидал.Это первая запись.Как я могу получить последнюю запись?Это код:
String[] includeFields = new String[] {"eventTimestamp"};
String[] excludeFields = new String[] {"logEvent","testId","orderId","marketId"};
searchSourceBuilder.query(QueryBuilders.matchQuery("sequenceStatus", "OB ORDER COMPLETE")).sort("eventTimestamp", SortOrder.DESC).fetchSource(includeFields,excludeFields);
searchSourceBuilder.size(20);
searchReq.source(searchSourceBuilder);
try {
SearchResponse searchResp=client.search(searchReq);
SearchHit[] results = searchResp.getHits().getHits();
queryResultPrint(results);
String eventTimestamp= searchResp.getHits().getAt(0).getSourceAsMap().get("eventTimestamp").toString();
return eventTimestamp;
} catch (IOException e) {
e.printStackTrace();
}
Результаты:
{"eventTimestamp": "2018-05-14 19: 52: 22.221184000"}
{"eventTimestamp":" 2018-05-14 19: 52: 22.221645000 "}
{" eventTimestamp ":" 2018-05-14 19: 52: 22.222064000 "}
{" eventTimestamp ":"2018-05-14 19: 52: 22.222445000"}
{"eventTimestamp": "2018-05-14 19: 52: 22.222880000"} ......
Примечание: queryResultPrint (results) - это код для печати searchResponse.