public class ElasticSearchNxqlPageProvider extends CoreQueryDocumentPageProvider
Modifier and Type | Field and Description |
---|---|
static String |
CORE_SESSION_PROPERTY |
protected HashMap<String,Aggregate<? extends Bucket>> |
currentAggregates |
protected List<DocumentModel> |
currentPageDocuments |
static String |
DEFAULT_ES_MAX_RESULT_WINDOW_VALUE |
static String |
ES_MAX_RESULT_WINDOW_PROPERTY |
protected static org.apache.commons.logging.Log |
log |
protected Long |
maxResultWindow |
static String |
SEARCH_ON_ALL_REPOSITORIES_PROPERTY |
CHECK_QUERY_CACHE_PROPERTY, DEFAULT_NAVIGATION_RESULTS_KEY, DEFAULT_NAVIGATION_RESULTS_PROPERTY, DEFAULT_NAVIGATION_RESULTS_VALUE, DETACH_DOCUMENTS_PROPERTY, MAX_RESULTS_PROPERTY, maxResults, PAGE_SIZE_RESULTS_KEY, query, USE_UNRESTRICTED_SESSION_PROPERTY
currentEntryIndex, currentHigherNonEmptyPageIndex, currentSelectPage, definition, error, errorMessage, highlights, maxPageSize, name, offset, PAGEPROVIDER_TRACK_PROPERTY_NAME, pageProviderChangedListener, pageSize, pageSizeOptions, parameters, properties, quickFilters, resultsCount, searchDocumentModel, selectedEntries, SKIPPED_SCHEMAS_FOR_SEARCHFIELD, sortable, sortInfos, tracking
DEFAULT_MAX_PAGE_SIZE, DEFAULT_MAX_PAGE_SIZE_RUNTIME_PROP, HIGHLIGHT_CTX_DATA, PAGE_LIMIT_UNKNOWN, UNKNOWN_SIZE, UNKNOWN_SIZE_AFTER_QUERY
Constructor and Description |
---|
ElasticSearchNxqlPageProvider() |
Modifier and Type | Method and Description |
---|---|
Map<String,Aggregate<? extends Bucket>> |
getAggregates() |
protected CoreSession |
getCoreSession() |
List<DocumentModel> |
getCurrentPage()
Returns the list of current page items.
|
org.elasticsearch.index.query.QueryBuilder |
getCurrentQueryAsEsBuilder() |
protected int |
getLimit() |
long |
getMaxResultWindow()
Returns the max result window where the PP can navigate without raising Elasticsearch
QueryPhaseExecutionException.
|
long |
getPageLimit()
Returns the page limit.
|
boolean |
hasAggregateSupport() |
protected void |
incorporateAggregates(Map<String,Serializable> eventProps)
Extends the default implementation to add results of aggregates
|
boolean |
isLastPageAvailable()
Returns a boolean expressing if the last page can be displayed.
|
boolean |
isNextPageAvailable()
Returns a boolean expressing if there are further pages.
|
protected void |
pageChanged()
Page change hook, to override for custom behavior
|
void |
refresh()
Refresh hook, to override for custom behavior
|
protected boolean |
searchOnAllRepositories() |
void |
setMaxResultWindow(long maxResultWindow)
Set the max result window where the PP can navigate, for testing purpose.
|
buildQuery, checkQueryCache, detachDocuments, getCurrentQuery, getCurrentSelectPage, getFilter, getMaxResults, setMaxResults, useUnrestrictedSession
addQuickFilter, addSortInfo, fireSearchEvent, firstPage, getAggregateDefinitions, getAvailableQuickFilters, getBooleanProperty, getCurrentEntry, getCurrentHigherNonEmptyPageIndex, getCurrentPageIndex, getCurrentPageOffset, getCurrentPageSize, getCurrentPageStatus, getDefaultMaxPageSize, getDefinition, getError, getErrorMessage, getHighlights, getMaxNumberOfEmptyPages, getMaxPageSize, getMinMaxPageSize, getName, getNumberOfPages, getPageSize, getPageSizeOptions, getParameters, getParametersChanged, getProperties, getQuickFilters, getResultsCount, getSearchDocumentModel, getSortInfo, getSortInfoIndex, getSortInfos, hasChangedParameters, hasError, isNextEntryAvailable, isPreviousEntryAvailable, isPreviousPageAvailable, isSortable, isTrackingEnabled, lastPage, nextEntry, nextPage, notifyPageChanged, notifyRefresh, previousEntry, previousPage, searchDocumentModelChanged, setCurrentEntry, setCurrentEntryIndex, setCurrentHigherNonEmptyPageIndex, setCurrentPage, setCurrentPageIndex, setCurrentPageOffset, setDefinition, setHighlights, setMaxPageSize, setName, setPageProviderChangedListener, setPageSize, setPageSizeOptions, setParameters, setProperties, setQuickFilters, setResultsCount, setSearchDocumentModel, setSelectedEntries, setSortable, setSortInfo, setSortInfo, setSortInfos, sortInfoChanged
protected static final org.apache.commons.logging.Log log
public static final String CORE_SESSION_PROPERTY
public static final String SEARCH_ON_ALL_REPOSITORIES_PROPERTY
public static final String ES_MAX_RESULT_WINDOW_PROPERTY
public static final String DEFAULT_ES_MAX_RESULT_WINDOW_VALUE
protected List<DocumentModel> currentPageDocuments
protected HashMap<String,Aggregate<? extends Bucket>> currentAggregates
protected Long maxResultWindow
public ElasticSearchNxqlPageProvider()
public List<DocumentModel> getCurrentPage()
AbstractPageProvider
Custom implementation can be added here, based on the page provider properties, parameters and
WhereClauseDefinition
on the PageProviderDefinition
, as well as search document, sort
information, etc...
Implementation of this method usually consists in setting a non-null value to a field caching current items, and
nullifying this field by overriding AbstractPageProvider.pageChanged()
and AbstractPageProvider.refresh()
.
Fields AbstractPageProvider.errorMessage
and AbstractPageProvider.error
can also be filled to provide accurate feedback in case an error
occurs during the search.
When items are retrieved, a call to AbstractPageProvider.setResultsCount(long)
should be made to ensure proper pagination as
implemented in this abstract class. The implementation in CoreQueryAndFetchPageProvider
is a good example
when the total results count is known.
If for performance reasons, for instance, the number of results cannot be known, a fall-back strategy can be
applied to provide the "next" button but not the "last" one, by calling
AbstractPageProvider.getCurrentHigherNonEmptyPageIndex()
and AbstractPageProvider.setCurrentHigherNonEmptyPageIndex(int)
. In this case,
CoreQueryDocumentPageProvider
is a good example.
getCurrentPage
in interface PageProvider<DocumentModel>
getCurrentPage
in class CoreQueryDocumentPageProvider
protected int getLimit()
public org.elasticsearch.index.query.QueryBuilder getCurrentQueryAsEsBuilder()
protected void pageChanged()
AbstractPageProvider
When overriding it, call super.pageChanged()
as last statement to make sure that the
PageProviderChangedListener
is called with the up-to-date @{code PageProvider} state.
pageChanged
in class CoreQueryDocumentPageProvider
public void refresh()
AbstractPageProvider
When overriding it, call super.refresh()
as last statement to make sure that the
PageProviderChangedListener
is called with the up-to-date @{code PageProvider} state.
refresh
in interface PageProvider<DocumentModel>
refresh
in class CoreQueryDocumentPageProvider
protected CoreSession getCoreSession()
getCoreSession
in class CoreQueryDocumentPageProvider
protected boolean searchOnAllRepositories()
public boolean hasAggregateSupport()
hasAggregateSupport
in interface PageProvider<DocumentModel>
hasAggregateSupport
in class AbstractPageProvider<DocumentModel>
public Map<String,Aggregate<? extends Bucket>> getAggregates()
getAggregates
in interface PageProvider<DocumentModel>
getAggregates
in class AbstractPageProvider<DocumentModel>
protected void incorporateAggregates(Map<String,Serializable> eventProps)
incorporateAggregates
in class AbstractPageProvider<DocumentModel>
public boolean isLastPageAvailable()
PageProvider
isLastPageAvailable
in interface PageProvider<DocumentModel>
isLastPageAvailable
in class AbstractPageProvider<DocumentModel>
public boolean isNextPageAvailable()
PageProvider
isNextPageAvailable
in interface PageProvider<DocumentModel>
isNextPageAvailable
in class AbstractPageProvider<DocumentModel>
public long getPageLimit()
CoreQueryDocumentPageProvider
getPageLimit
in interface PageProvider<DocumentModel>
getPageLimit
in class CoreQueryDocumentPageProvider
public long getMaxResultWindow()
from + size
must be less than or equal to this value.public void setMaxResultWindow(long maxResultWindow)
Copyright © 2017 Nuxeo. All rights reserved.