Результат упругой сортировки не отображается в SearchResponse - PullRequest
0 голосов
/ 17 мая 2018

Я хотел получить последние записи, чей 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.

1 Ответ

0 голосов
/ 17 мая 2018

Я думаю, что вам не хватает связи между вашими searchSourceBuilder и searchReq. По крайней мере, я не вижу этого в фрагменте кода, который вы разместили.

С моей точки зрения, перед тем как получить ответ, у вас должна быть другая строка кода:

searchSourceBuilder.query(QueryBuilders.matchQuery("sequenceStatus", "OB ORDER COMPLETE")).sort("eventTimestamp", SortOrder.DESC).fetchSource(includeFields,excludeFields);
/* binding source searchSourceBuilder to searchReq */
searchReq.source(searchSourceBuilder);
/* */
SearchResponse searchResp=client.search(searchReq);

Как я уже сказал, я новичок в ES и могу ошибаться

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...