Как использовать search_after в Elastic High Level Rest Client для нумерации страниц - PullRequest
0 голосов
/ 27 сентября 2019

Я использую эластичный 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);
        }

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