Я использую эластичный RestHighLevelClient для общения с ES.Я могу запросить основные запросы.Хотя я пытаюсь использовать API-интерфейс search_after для разработки API-страниц с разбивкой по страницам из запросов внешнего интерфейса.Хотя query_after прост в использовании в API RestLowLevelClient, я не могу понять, как использовать его в API HighLevel.
Похоже, что в API Lucene есть SearchAfterSortedDocQuery, но я не могу понять, как его использоватьэто с упругим поиском API.Например: в приведенном ниже коде я инициализирую запрос SearchAfterSortedDocQuery, но не знаю, как его использовать.
RestHighLevelClient client = ESRestClient.getClient();
SearchRequest searchRequest = new SearchRequest();
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.termQuery("field1",value1));
searchSourceBuilder.query(QueryBuilders.termQuery("field2",value2));
searchSourceBuilder.from(0);
searchSourceBuilder.size(limit);
SortField[] sortFields = new SortField[2];
sortFields[0]= new SortField("field1", SortField.Type.LONG);
sortFields[1]= new SortField("field2", SortField.Type.LONG);
FieldDoc fieldDoc = new FieldDoc(0,0); //Is this correct? how to initialize field doc?
fieldDoc.fields = new Object[2];
fieldDoc.fields[0] = new Long("-156034");
fieldDoc.fields[1] = new Long("2297416849");
SearchAfterSortedDocQuery query = new SearchAfterSortedDocQuery(new Sort(sortFields), fieldDoc);
searchRequest.source(searchSourceBuilder);
searchRequest.indices("index1");
try {
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
System.out.println(response);
}
catch(IOException e){
System.out.println(e);
}
}