public Response searchMessages()

in java/core/src/main/java/com/aliyun/openservices/tablestore/agent/memory/MemoryStoreImpl.java [742:779]


    public Response<Message> searchMessages(MemorySearchRequest searchRequest) {
        if (log.isDebugEnabled()) {
            log.debug("before search messages:{}", 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(messageTableName)
            .indexName(messageSearchIndexName)
            .searchQuery(searchQuery)
            .returnAllColumns(true)
            .build();
        try {
            SearchResponse searchResponse = client.search(otsSearchRequest);
            log.info("search messages:{}, request_id:{}", searchRequest, searchResponse.getRequestId());
            Triple<List<Message>, String, List<Double>> triple = TablestoreHelper.parserSearchResponse(searchResponse, TablestoreHelper::rowToMessage);
            List<Message> messages = triple.getLeft();
            String nextTokenStr = triple.getMiddle();
            return new Response<>(messages, nextTokenStr);
        } catch (TableStoreException e) {
            throw Exceptions.runtimeThrowable(String.format("search messages failed, request_id:%s, query:[%s]", e.getRequestId(), searchRequest), e);
        } catch (Exception e) {
            throw Exceptions.runtimeThrowable(String.format("search messages failed, query:[%s]", searchRequest), e);
        }
    }