Пагинация с эластичным поиском в Titan

Я использую Elastic Search с Titan. Как я могу сделать пагинацию в ES с титаном?

Я видел ЭТО и так далее. пытался это:

Iterable<Result<Vertex>> vertices = g.indexQuery("search","v.testTitle:(mytext)")
            .addParameter(new Parameter("from", 0))
            .addParameter(new Parameter("size", 2)).vertices();    

for (Result<Vertex> result : vertices) {
    Vertex tv = result.getElement();
    System.out.println(tv.getProperty("testTitle")+ ": " + result.getScore());
}

Дело в том, что он возвращает все 4-5 записей не размером 2


person Manish Kumar    schedule 16.03.2014    source источник


Ответы (2)


параметры пока не поддерживаются. Метод существует только для будущих реализаций. Однако в настоящее время вы можете ограничить свой результат. Следующий код должен работать:

Iterable<Result<Vertex>> vertices = g.indexQuery("search","v.testTitle:(mytext)")
            .limit(2).vertices();    

for (Result<Vertex> result : vertices) {
    Vertex tv = result.getElement();
    System.out.println(tv.getProperty("testTitle")+ ": " + result.getScore());
}

... но вы не можете указать смещение.

Привет, Даниэль

person Daniel Kuppitz    schedule 16.03.2014
comment
но это не пагинация. Представьте себе веб-страницу, на которой я показываю 10 записей результатов поиска на странице. как я получу СЛЕДУЮЩУЮ и ПРЕДЫДУЩУЮ записи? - person Manish Kumar; 16.03.2014
comment
Как я уже сказал, в настоящее время это не поддерживается. Вам придется найти обходной путь или реализовать его самостоятельно и отправить запрос на включение. - person Daniel Kuppitz; 16.03.2014
comment
Можете ли вы сказать мне, как я могу выполнить тот же запрос непосредственно из java-клиента ES. Я следил за elasticsearch.org/guide/en/elasticsearch/client/java-api/0.90/ этот код, но он извлекал 0 записей. Возможно, я устанавливаю или пропускаю неправильный параметр. Я сделал client.prepareSearch("titan") .setQuery(QueryBuilders.fieldQuery("offerTitle", "mytext")), он вернул 0 просмотров - person Manish Kumar; 16.03.2014

Я ничего не знаю о титане. Но для реализации концепции разбивки на страницы в Elasticsearch вы можете использовать концепцию прокрутки. Это очень поможет, и это похоже на курсор базы данных. Это значительно снижает использование ЦП.

См. http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-scroll.html

person BlackPOP    schedule 16.03.2014