in java/core/src/main/java/com/aliyun/openservices/tablestore/agent/memory/MemoryStoreImpl.java [369:406]
public Response<Session> searchSessions(MemorySearchRequest searchRequest) {
if (log.isDebugEnabled()) {
log.debug("before search sessions:{}", searchRequest);
}
ValidationUtils.ensureNotNull(searchRequest, "MemorySearchRequest");
Query query = TablestoreHelper.parserSearchFilters(searchRequest.getMetadataFilter());
Sort otsSort = TablestoreHelper.toOtsSort(searchRequest.getSorts());
byte[] nextToken = null;
if (searchRequest.getNextToken() != null) {
nextToken = Base64.getDecoder().decode(searchRequest.getNextToken());
}
SearchQuery searchQuery = SearchQuery.newBuilder()
.query(query)
.getTotalCount(false)
.limit(searchRequest.getLimit())
.offset(0)
.sort(otsSort)
.token(nextToken)
.build();
SearchRequest otsSearchRequest = SearchRequest.newBuilder()
.tableName(sessionTableName)
.indexName(sessionSearchIndexName)
.searchQuery(searchQuery)
.returnAllColumns(true)
.build();
try {
SearchResponse searchResponse = client.search(otsSearchRequest);
log.info("search sessions:{}, request_id:{}", searchRequest, searchResponse.getRequestId());
Triple<List<Session>, String, List<Double>> triple = TablestoreHelper.parserSearchResponse(searchResponse, TablestoreHelper::rowToSession);
List<Session> sessions = triple.getLeft();
String nextTokenStr = triple.getMiddle();
return new Response<>(sessions, nextTokenStr);
} catch (TableStoreException e) {
throw Exceptions.runtimeThrowable(String.format("search sessions failed, request_id:%s, query:[%s]", e.getRequestId(), searchRequest), e);
} catch (Exception e) {
throw Exceptions.runtimeThrowable(String.format("search sessions failed, query:[%s]", searchRequest), e);
}
}