Class ElasticSearchPersistenceServiceImpl
- java.lang.Object
-
- org.apache.unomi.persistence.elasticsearch.ElasticSearchPersistenceServiceImpl
-
- All Implemented Interfaces:
EventListener
,PersistenceService
,org.osgi.framework.BundleListener
,org.osgi.framework.SynchronousBundleListener
public class ElasticSearchPersistenceServiceImpl extends Object implements PersistenceService, org.osgi.framework.SynchronousBundleListener
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ElasticSearchPersistenceServiceImpl.InClassLoaderExecute<T>
-
Field Summary
Fields Modifier and Type Field Description static String
BULK_PROCESSOR_BACKOFF_POLICY
static String
BULK_PROCESSOR_BULK_SIZE
static String
BULK_PROCESSOR_FLUSH_INTERVAL
static String
PRIMARY_TERM
static String
SEQ_NO
-
Constructor Summary
Constructors Constructor Description ElasticSearchPersistenceServiceImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Map<String,Long>
aggregateQuery(Condition filter, BaseAggregate aggregate, String itemType)
Deprecated.As of version 1.3.0-incubating, useaggregateWithOptimizedQuery(Condition, BaseAggregate, String)
insteadMap<String,Long>
aggregateWithOptimizedQuery(Condition filter, BaseAggregate aggregate, String itemType)
Retrieves the number of items with the specified type as defined by the Item subclass public fieldITEM_TYPE
matching the optional specified condition and aggregated according to the specifiedBaseAggregate
.Map<String,Long>
aggregateWithOptimizedQuery(Condition filter, BaseAggregate aggregate, String itemType, int size)
Retrieves the number of items with the specified type as defined by the Item subclass public fieldITEM_TYPE
matching the optional specified condition and aggregated according to the specifiedBaseAggregate
.void
bindConditionESQueryBuilder(org.osgi.framework.ServiceReference<ConditionESQueryBuilder> conditionESQueryBuilderServiceReference)
void
bindConditionEvaluator(org.osgi.framework.ServiceReference<ConditionEvaluator> conditionEvaluatorServiceReference)
void
bundleChanged(org.osgi.framework.BundleEvent event)
PartialList<CustomItem>
continueCustomItemScrollQuery(String customItemType, String scrollIdentifier, String scrollTimeValidity)
Continues the execution of a scroll query, to retrieve the next results.<T extends Item>
PartialList<T>continueScrollQuery(Class<T> clazz, String scrollIdentifier, String scrollTimeValidity)
Continues the execution of a scroll query, to retrieve the next results.boolean
createIndex(String itemType)
Creates an index with for the specified item type in the persistence engine.void
createMapping(String type, String source)
Create mapping<T extends Item>
List<T>getAllItems(Class<T> clazz)
Retrieves all known items of the specified class.<T extends Item>
PartialList<T>getAllItems(Class<T> clazz, int offset, int size, String sortBy)
Retrieves all known items of the specified class, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.<T extends Item>
PartialList<T>getAllItems(Class<T> clazz, int offset, int size, String sortBy, String scrollTimeValidity)
Retrieves all known items of the specified class, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.long
getAllItemsCount(String itemType)
Retrieves the number of items with the specified type as defined by the Item subclass public fieldITEM_TYPE
.org.elasticsearch.action.bulk.BulkProcessor
getBulkProcessor()
Map<String,Map<String,Object>>
getPropertiesMapping(String itemType)
Retrieve the type mappings for a given itemType.Map<String,Object>
getPropertyMapping(String property, String itemType)
Retrieve the mapping for one specific property for a given type.Map<String,Double>
getSingleValuesMetrics(Condition condition, String[] metrics, String field, String itemType)
Retrieves the specified metrics for the specified field of items of the specified type as defined by the Item subclass public fieldITEM_TYPE
and matching the specifiedCondition
.boolean
indexTemplateExists(String templateName)
boolean
isConsistent(Item item)
Return true if the item which is saved in the persistence service is consistentboolean
isValidCondition(Condition condition, Item item)
validates if a condition throws exception at query build.<T extends Item>
Tload(String itemId, Class<T> clazz)
Retrieves the item identified with the specified identifier and with the specified Item subclass if it exists.<T extends Item>
Tload(String itemId, Date dateHint, Class<T> clazz)
Deprecated.CustomItem
loadCustomItem(String itemId, String customItemType)
Load a custom item type identified by an identifier, an optional date hint and the identifier of the custom item typeCustomItem
loadCustomItem(String itemId, Date dateHint, String customItemType)
Deprecated.void
purge(String scope)
Removes all data associated with the provided scope.void
purge(Date date)
deprecated: (use: purgeTimeBasedItems instead)<T extends Item>
voidpurgeTimeBasedItems(int existsNumberOfDays, Class<T> clazz)
Purges time based data in the context server up to the specified days number of existence.<T extends Item>
List<T>query(String fieldName, String[] fieldValues, String sortBy, Class<T> clazz)
Retrieves a list of items with the specified field having the specified values.<T extends Item>
List<T>query(String fieldName, String fieldValue, String sortBy, Class<T> clazz)
Same asquery(fieldName, fieldValue, sortBy, clazz, 0, -1).getList()
<T extends Item>
PartialList<T>query(String fieldName, String fieldValue, String sortBy, Class<T> clazz, int offset, int size)
Retrieves a list of items with the specified field having the specified value.<T extends Item>
List<T>query(Condition query, String sortBy, Class<T> clazz)
Same asquery(query, sortBy, clazz, 0, -1).getList()
<T extends Item>
PartialList<T>query(Condition query, String sortBy, Class<T> clazz, int offset, int size)
Retrieves a list of items satisfying the specifiedCondition
, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.<T extends Item>
PartialList<T>query(Condition query, String sortBy, Class<T> clazz, int offset, int size, String scrollTimeValidity)
Retrieves a list of items satisfying the specifiedCondition
, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.long
queryCount(Condition query, String itemType)
Retrieves the number of items of the specified type as defined by the Item subclass public fieldITEM_TYPE
and matching the specifiedCondition
.PartialList<CustomItem>
queryCustomItem(Condition query, String sortBy, String customItemType, int offset, int size, String scrollTimeValidity)
Retrieves a list of items satisfying the specifiedCondition
, ordered according to the specifiedsortBy
String and paged: onlysize
of them are retrieved, starting with theoffset
-th one.<T extends Item>
PartialList<T>queryFullText(String fulltext, String sortBy, Class<T> clazz, int offset, int size)
Retrieves a list of items having at least a field with the specified full text value in it, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.<T extends Item>
PartialList<T>queryFullText(String fieldName, String fieldValue, String fulltext, String sortBy, Class<T> clazz, int offset, int size)
Retrieves a list of items with the specified field having the specified value and having at least a field with the specified full text value in it, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.<T extends Item>
PartialList<T>queryFullText(String fulltext, Condition query, String sortBy, Class<T> clazz, int offset, int size)
Retrieves the same items asquery(query, sortBy, clazz, 0, -1)
with the added constraints that the matching elements must also have at least a field matching the specified full text query.<T extends Item>
PartialList<T>rangeQuery(String fieldName, String from, String to, String sortBy, Class<T> clazz, int offset, int size)
Retrieves all items of the specified Item subclass which specified ranged property is within the specified bounds, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.void
refresh()
Updates the persistence's engine indices if needed.<T extends Item>
voidrefreshIndex(Class<T> clazz, Date dateHint)
boolean
registerRolloverLifecyclePolicy()
<T extends Item>
booleanremove(String itemId, Class<T> clazz)
Deletes the item identified with the specified identifier and with the specified Item subclass if it exists.<T extends Item>
booleanremoveByQuery(Condition query, Class<T> clazz)
Deletes items with the specified Item subclass matching the specifiedCondition
.<T extends Item>
booleanremoveByQuery(org.elasticsearch.index.query.QueryBuilder queryBuilder, Class<T> clazz)
boolean
removeCustomItem(String itemId, String customItemType)
Remove a custom item identified by the custom item identifier and the custom item type identifierboolean
removeIndex(String itemType)
Removes the index for the specified item type.boolean
removeIndexTemplate(String templateName)
boolean
removeQuery(String queryName)
Deletes the query identified by the specified name.boolean
save(Item item)
Persists the specified Item in the context server.boolean
save(Item item, boolean useBatching)
Persists the specified Item in the context server.boolean
save(Item item, Boolean useBatchingOption, Boolean alwaysOverwriteOption)
Persists the specified Item in the context server.boolean
saveQuery(String queryName, String query)
boolean
saveQuery(String queryName, Condition query)
Persists the specified query under the specified name.void
setAggQueryMaxResponseSizeHttp(String aggQueryMaxResponseSizeHttp)
void
setAggQueryThrowOnMissingDocs(boolean aggQueryThrowOnMissingDocs)
void
setAggregateQueryBucketSize(int aggregateQueryBucketSize)
void
setAlwaysOverwrite(boolean alwaysOverwrite)
void
setBulkProcessorBackoffPolicy(String bulkProcessorBackoffPolicy)
void
setBulkProcessorBulkActions(String bulkProcessorBulkActions)
void
setBulkProcessorBulkSize(String bulkProcessorBulkSize)
void
setBulkProcessorConcurrentRequests(String bulkProcessorConcurrentRequests)
void
setBulkProcessorFlushInterval(String bulkProcessorFlushInterval)
void
setBundleContext(org.osgi.framework.BundleContext bundleContext)
void
setClientSocketTimeout(String clientSocketTimeout)
void
setClusterName(String clusterName)
void
setConditionESQueryBuilderDispatcher(ConditionESQueryBuilderDispatcher conditionESQueryBuilderDispatcher)
void
setConditionEvaluatorDispatcher(ConditionEvaluatorDispatcher conditionEvaluatorDispatcher)
void
setDefaultQueryLimit(Integer defaultQueryLimit)
void
setElasticSearchAddresses(String elasticSearchAddresses)
void
setFatalIllegalStateErrors(String fatalIllegalStateErrors)
void
setIndexMappingTotalFieldsLimit(String indexMappingTotalFieldsLimit)
void
setIndexMaxDocValueFieldsSearch(String indexMaxDocValueFieldsSearch)
void
setIndexPrefix(String indexPrefix)
void
setItemsMonthlyIndexedOverride(String itemsMonthlyIndexedOverride)
Deprecated.void
setItemTypeToRefreshPolicy(String itemTypeToRefreshPolicy)
void
setLogLevelRestClient(String logLevelRestClient)
void
setMaximalElasticSearchVersion(String maximalElasticSearchVersion)
void
setMetricsService(MetricsService metricsService)
void
setMinimalElasticSearchVersion(String minimalElasticSearchVersion)
void
setMonthlyIndexMappingTotalFieldsLimit(String monthlyIndexMappingTotalFieldsLimit)
Deprecated.void
setMonthlyIndexMaxDocValueFieldsSearch(String monthlyIndexMaxDocValueFieldsSearch)
Deprecated.void
setMonthlyIndexNumberOfReplicas(String monthlyIndexNumberOfReplicas)
Deprecated.void
setMonthlyIndexNumberOfShards(String monthlyIndexNumberOfShards)
Deprecated.void
setNumberOfReplicas(String numberOfReplicas)
void
setNumberOfShards(String numberOfShards)
void
setPassword(String password)
void
setPropertyMapping(PropertyType property, String itemType)
Create the persistence mapping for specific property for a given type.void
setRolloverIndexMappingTotalFieldsLimit(String rolloverIndexMappingTotalFieldsLimit)
void
setRolloverIndexMaxDocValueFieldsSearch(String rolloverIndexMaxDocValueFieldsSearch)
void
setRolloverIndexNumberOfReplicas(String rolloverIndexNumberOfReplicas)
void
setRolloverIndexNumberOfShards(String rolloverIndexNumberOfShards)
void
setRolloverIndices(String rolloverIndices)
void
setRolloverMaxAge(String rolloverMaxAge)
void
setRolloverMaxDocs(String rolloverMaxDocs)
void
setRolloverMaxSize(String rolloverMaxSize)
void
setRoutingByType(Map<String,String> routingByType)
void
setSslEnable(boolean sslEnable)
void
setSslTrustAllCertificates(boolean sslTrustAllCertificates)
void
setTaskWaitingPollingInterval(String taskWaitingPollingInterval)
void
setTaskWaitingTimeout(String taskWaitingTimeout)
void
setThrowExceptions(boolean throwExceptions)
void
setUseBatchingForSave(boolean useBatchingForSave)
void
setUseBatchingForUpdate(boolean useBatchingForUpdate)
void
setUsername(String username)
void
start()
void
stop()
boolean
storeScripts(Map<String,String> scripts)
Store script in the Database for later usage with updateWithQueryAndStoredScript function for example.boolean
testMatch(Condition query, Item item)
Checks whether the specified item satisfies the provided condition.void
unbindConditionESQueryBuilder(org.osgi.framework.ServiceReference<ConditionESQueryBuilder> conditionESQueryBuilderServiceReference)
void
unbindConditionEvaluator(org.osgi.framework.ServiceReference<ConditionEvaluator> conditionEvaluatorServiceReference)
List<String>
update(Map<Item,Map> items, Date dateHint, Class clazz)
boolean
update(Item item, Class clazz, String propertyName, Object propertyValue)
Updates the item of the specified class and identified by the specified identifier with a new property value for the specified property name.boolean
update(Item item, Class clazz, Map source)
Updates the item of the specified class and identified by the specified identifier with new property values provided as name - value pairs in the specified Map.boolean
update(Item item, Class clazz, Map source, boolean alwaysOverwrite)
Updates the item of the specified class and identified by the specified identifier with new property values provided as name - value pairs in the specified Map.boolean
update(Item item, Date dateHint, Class clazz, String propertyName, Object propertyValue)
boolean
update(Item item, Date dateHint, Class clazz, Map source)
boolean
update(Item item, Date dateHint, Class clazz, Map source, boolean alwaysOverwrite)
boolean
updateWithQueryAndScript(Class<?> clazz, String[] scripts, Map<String,Object>[] scriptParams, Condition[] conditions)
Updates the items of the specified class by a query with a new property value for the specified property name based on provided scripts and script parametersboolean
updateWithQueryAndScript(Date dateHint, Class<?> clazz, String[] scripts, Map<String,Object>[] scriptParams, Condition[] conditions)
boolean
updateWithQueryAndStoredScript(Class<?>[] classes, String[] scripts, Map<String,Object>[] scriptParams, Condition[] conditions, boolean waitForComplete)
Updates the items of the specified class by a query with a new property value for the specified property name based on provided stored scripts and script parameters, This one is able to perform an update on multiple types in a single run, be careful with your query as it will be performed on all of them.boolean
updateWithQueryAndStoredScript(Class<?> clazz, String[] scripts, Map<String,Object>[] scriptParams, Condition[] conditions)
Updates the items of the specified class by a query with a new property value for the specified property name based on provided stored scripts and script parametersboolean
updateWithQueryAndStoredScript(Date dateHint, Class<?> clazz, String[] scripts, Map<String,Object>[] scriptParams, Condition[] conditions)
boolean
updateWithScript(Item item, Class<?> clazz, String script, Map<String,Object> scriptParams)
Updates the item of the specified class and identified by the specified identifier with a new property value for the specified property name.boolean
updateWithScript(Item item, Date dateHint, Class<?> clazz, String script, Map<String,Object> scriptParams)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.unomi.persistence.spi.PersistenceService
refreshIndex, update
-
-
-
-
Field Detail
-
BULK_PROCESSOR_BULK_SIZE
public static final String BULK_PROCESSOR_BULK_SIZE
- See Also:
- Constant Field Values
-
BULK_PROCESSOR_FLUSH_INTERVAL
public static final String BULK_PROCESSOR_FLUSH_INTERVAL
- See Also:
- Constant Field Values
-
BULK_PROCESSOR_BACKOFF_POLICY
public static final String BULK_PROCESSOR_BACKOFF_POLICY
- See Also:
- Constant Field Values
-
SEQ_NO
public static final String SEQ_NO
- See Also:
- Constant Field Values
-
PRIMARY_TERM
public static final String PRIMARY_TERM
- See Also:
- Constant Field Values
-
-
Method Detail
-
setBundleContext
public void setBundleContext(org.osgi.framework.BundleContext bundleContext)
-
setClusterName
public void setClusterName(String clusterName)
-
setElasticSearchAddresses
public void setElasticSearchAddresses(String elasticSearchAddresses)
-
setItemTypeToRefreshPolicy
public void setItemTypeToRefreshPolicy(String itemTypeToRefreshPolicy) throws IOException
- Throws:
IOException
-
setFatalIllegalStateErrors
public void setFatalIllegalStateErrors(String fatalIllegalStateErrors)
-
setAggQueryMaxResponseSizeHttp
public void setAggQueryMaxResponseSizeHttp(String aggQueryMaxResponseSizeHttp)
-
setIndexPrefix
public void setIndexPrefix(String indexPrefix)
-
setMonthlyIndexNumberOfShards
@Deprecated public void setMonthlyIndexNumberOfShards(String monthlyIndexNumberOfShards)
Deprecated.
-
setMonthlyIndexNumberOfReplicas
@Deprecated public void setMonthlyIndexNumberOfReplicas(String monthlyIndexNumberOfReplicas)
Deprecated.
-
setMonthlyIndexMappingTotalFieldsLimit
@Deprecated public void setMonthlyIndexMappingTotalFieldsLimit(String monthlyIndexMappingTotalFieldsLimit)
Deprecated.
-
setMonthlyIndexMaxDocValueFieldsSearch
@Deprecated public void setMonthlyIndexMaxDocValueFieldsSearch(String monthlyIndexMaxDocValueFieldsSearch)
Deprecated.
-
setItemsMonthlyIndexedOverride
@Deprecated public void setItemsMonthlyIndexedOverride(String itemsMonthlyIndexedOverride)
Deprecated.
-
setNumberOfShards
public void setNumberOfShards(String numberOfShards)
-
setNumberOfReplicas
public void setNumberOfReplicas(String numberOfReplicas)
-
setIndexMappingTotalFieldsLimit
public void setIndexMappingTotalFieldsLimit(String indexMappingTotalFieldsLimit)
-
setIndexMaxDocValueFieldsSearch
public void setIndexMaxDocValueFieldsSearch(String indexMaxDocValueFieldsSearch)
-
setDefaultQueryLimit
public void setDefaultQueryLimit(Integer defaultQueryLimit)
-
setConditionEvaluatorDispatcher
public void setConditionEvaluatorDispatcher(ConditionEvaluatorDispatcher conditionEvaluatorDispatcher)
-
setConditionESQueryBuilderDispatcher
public void setConditionESQueryBuilderDispatcher(ConditionESQueryBuilderDispatcher conditionESQueryBuilderDispatcher)
-
setBulkProcessorConcurrentRequests
public void setBulkProcessorConcurrentRequests(String bulkProcessorConcurrentRequests)
-
setBulkProcessorBulkActions
public void setBulkProcessorBulkActions(String bulkProcessorBulkActions)
-
setBulkProcessorBulkSize
public void setBulkProcessorBulkSize(String bulkProcessorBulkSize)
-
setBulkProcessorFlushInterval
public void setBulkProcessorFlushInterval(String bulkProcessorFlushInterval)
-
setBulkProcessorBackoffPolicy
public void setBulkProcessorBackoffPolicy(String bulkProcessorBackoffPolicy)
-
setRolloverIndices
public void setRolloverIndices(String rolloverIndices)
-
setRolloverMaxSize
public void setRolloverMaxSize(String rolloverMaxSize)
-
setRolloverMaxAge
public void setRolloverMaxAge(String rolloverMaxAge)
-
setRolloverMaxDocs
public void setRolloverMaxDocs(String rolloverMaxDocs)
-
setRolloverIndexNumberOfShards
public void setRolloverIndexNumberOfShards(String rolloverIndexNumberOfShards)
-
setRolloverIndexNumberOfReplicas
public void setRolloverIndexNumberOfReplicas(String rolloverIndexNumberOfReplicas)
-
setRolloverIndexMappingTotalFieldsLimit
public void setRolloverIndexMappingTotalFieldsLimit(String rolloverIndexMappingTotalFieldsLimit)
-
setRolloverIndexMaxDocValueFieldsSearch
public void setRolloverIndexMaxDocValueFieldsSearch(String rolloverIndexMaxDocValueFieldsSearch)
-
setMinimalElasticSearchVersion
public void setMinimalElasticSearchVersion(String minimalElasticSearchVersion)
-
setMaximalElasticSearchVersion
public void setMaximalElasticSearchVersion(String maximalElasticSearchVersion)
-
setAggregateQueryBucketSize
public void setAggregateQueryBucketSize(int aggregateQueryBucketSize)
-
setClientSocketTimeout
public void setClientSocketTimeout(String clientSocketTimeout)
-
setMetricsService
public void setMetricsService(MetricsService metricsService)
-
setUseBatchingForSave
public void setUseBatchingForSave(boolean useBatchingForSave)
-
setUseBatchingForUpdate
public void setUseBatchingForUpdate(boolean useBatchingForUpdate)
-
setUsername
public void setUsername(String username)
-
setPassword
public void setPassword(String password)
-
setSslEnable
public void setSslEnable(boolean sslEnable)
-
setSslTrustAllCertificates
public void setSslTrustAllCertificates(boolean sslTrustAllCertificates)
-
setAggQueryThrowOnMissingDocs
public void setAggQueryThrowOnMissingDocs(boolean aggQueryThrowOnMissingDocs)
-
setThrowExceptions
public void setThrowExceptions(boolean throwExceptions)
-
setAlwaysOverwrite
public void setAlwaysOverwrite(boolean alwaysOverwrite)
-
setLogLevelRestClient
public void setLogLevelRestClient(String logLevelRestClient)
-
setTaskWaitingTimeout
public void setTaskWaitingTimeout(String taskWaitingTimeout)
-
setTaskWaitingPollingInterval
public void setTaskWaitingPollingInterval(String taskWaitingPollingInterval)
-
getBulkProcessor
public org.elasticsearch.action.bulk.BulkProcessor getBulkProcessor()
-
stop
public void stop()
-
bindConditionEvaluator
public void bindConditionEvaluator(org.osgi.framework.ServiceReference<ConditionEvaluator> conditionEvaluatorServiceReference)
-
unbindConditionEvaluator
public void unbindConditionEvaluator(org.osgi.framework.ServiceReference<ConditionEvaluator> conditionEvaluatorServiceReference)
-
bindConditionESQueryBuilder
public void bindConditionESQueryBuilder(org.osgi.framework.ServiceReference<ConditionESQueryBuilder> conditionESQueryBuilderServiceReference)
-
unbindConditionESQueryBuilder
public void unbindConditionESQueryBuilder(org.osgi.framework.ServiceReference<ConditionESQueryBuilder> conditionESQueryBuilderServiceReference)
-
bundleChanged
public void bundleChanged(org.osgi.framework.BundleEvent event)
- Specified by:
bundleChanged
in interfaceorg.osgi.framework.BundleListener
-
getAllItems
public <T extends Item> List<T> getAllItems(Class<T> clazz)
Description copied from interface:PersistenceService
Retrieves all known items of the specified class. WARNING: this method can be quite computationally intensive and calling the paged versionPersistenceService.getAllItems(Class, int, int, String)
is preferred.- Specified by:
getAllItems
in interfacePersistenceService
- Type Parameters:
T
- the type of theItem
s we want to retrieve- Parameters:
clazz
- theItem
subclass of entities we want to retrieve- Returns:
- a list of all known items with the given type
-
getAllItemsCount
public long getAllItemsCount(String itemType)
Description copied from interface:PersistenceService
Retrieves the number of items with the specified type as defined by the Item subclass public fieldITEM_TYPE
.- Specified by:
getAllItemsCount
in interfacePersistenceService
- Parameters:
itemType
- the String representation of the item type we want to retrieve the count of, as defined by its class'ITEM_TYPE
field- Returns:
- the number of items of the specified type
- See Also:
Item for a discussion of
-
getAllItems
public <T extends Item> PartialList<T> getAllItems(Class<T> clazz, int offset, int size, String sortBy)
Description copied from interface:PersistenceService
Retrieves all known items of the specified class, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.TODO: use a Query object instead of distinct parameters?
- Specified by:
getAllItems
in interfacePersistenceService
- Type Parameters:
T
- the type of theItem
s we want to retrieve- Parameters:
clazz
- theItem
subclass of entities we want to retrieveoffset
- zero or a positive integer specifying the position of the first item in the total ordered collection of matching itemssize
- a positive integer specifying how many matching items should be retrieved or-1
if all of them should be retrievedsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.- Returns:
- a
PartialList
of pages items with the given type
-
getAllItems
public <T extends Item> PartialList<T> getAllItems(Class<T> clazz, int offset, int size, String sortBy, String scrollTimeValidity)
Description copied from interface:PersistenceService
Retrieves all known items of the specified class, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.TODO: use a Query object instead of distinct parameters?
- Specified by:
getAllItems
in interfacePersistenceService
- Type Parameters:
T
- the type of theItem
s we want to retrieve- Parameters:
clazz
- theItem
subclass of entities we want to retrieveoffset
- zero or a positive integer specifying the position of the first item in the total ordered collection of matching itemssize
- a positive integer specifying how many matching items should be retrieved or-1
if all of them should be retrievedsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.scrollTimeValidity
- the time the scrolling query should stay valid. This must contain a time unit value such as the ones supported by ElasticSearch, such as * the ones declared here : https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#time-units- Returns:
- a
PartialList
of pages items with the given type
-
load
public <T extends Item> T load(String itemId, Class<T> clazz)
Description copied from interface:PersistenceService
Retrieves the item identified with the specified identifier and with the specified Item subclass if it exists.- Specified by:
load
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
itemId
- the identifier of the item we want to retrieveclazz
- theItem
subclass of the item we want to retrieve- Returns:
- the item identified with the specified identifier and with the specified Item subclass if it exists,
null
otherwise
-
load
@Deprecated public <T extends Item> T load(String itemId, Date dateHint, Class<T> clazz)
Deprecated.- Specified by:
load
in interfacePersistenceService
-
loadCustomItem
@Deprecated public CustomItem loadCustomItem(String itemId, Date dateHint, String customItemType)
Deprecated.- Specified by:
loadCustomItem
in interfacePersistenceService
-
loadCustomItem
public CustomItem loadCustomItem(String itemId, String customItemType)
Description copied from interface:PersistenceService
Load a custom item type identified by an identifier, an optional date hint and the identifier of the custom item type- Specified by:
loadCustomItem
in interfacePersistenceService
- Parameters:
itemId
- the identifier of the custom type we want to retrievecustomItemType
- an identifier of the custom item type to load- Returns:
- the CustomItem instance with the specified identifier and the custom item type if it exists,
null
otherwise
-
isConsistent
public boolean isConsistent(Item item)
Description copied from interface:PersistenceService
Return true if the item which is saved in the persistence service is consistent- Specified by:
isConsistent
in interfacePersistenceService
- Parameters:
item
- the item to the check if consistent- Returns:
true
if the item is consistent, false otherwise
-
save
public boolean save(Item item)
Description copied from interface:PersistenceService
Persists the specified Item in the context server.- Specified by:
save
in interfacePersistenceService
- Parameters:
item
- the item to persist- Returns:
true
if the item was properly persisted,false
otherwise
-
save
public boolean save(Item item, boolean useBatching)
Description copied from interface:PersistenceService
Persists the specified Item in the context server.- Specified by:
save
in interfacePersistenceService
- Parameters:
item
- the item to persistuseBatching
- whether to use batching or not for saving the item. If activating there may be a delay between the call to this method and the actual saving in the persistence backend.- Returns:
true
if the item was properly persisted,false
otherwise
-
save
public boolean save(Item item, Boolean useBatchingOption, Boolean alwaysOverwriteOption)
Description copied from interface:PersistenceService
Persists the specified Item in the context server.- Specified by:
save
in interfacePersistenceService
- Parameters:
item
- the item to persistuseBatchingOption
- whether to use batching or not for saving the item. If activating there may be a delay between the call to this method and the actual saving in the persistence backendalwaysOverwriteOption
- whether to overwrite a document even if we are holding an old item when saving- Returns:
true
if the item was properly persisted,false
otherwise
-
update
public boolean update(Item item, Date dateHint, Class clazz, String propertyName, Object propertyValue)
- Specified by:
update
in interfacePersistenceService
-
update
public boolean update(Item item, Date dateHint, Class clazz, Map source)
- Specified by:
update
in interfacePersistenceService
-
update
public boolean update(Item item, Date dateHint, Class clazz, Map source, boolean alwaysOverwrite)
- Specified by:
update
in interfacePersistenceService
-
update
public boolean update(Item item, Class clazz, String propertyName, Object propertyValue)
Description copied from interface:PersistenceService
Updates the item of the specified class and identified by the specified identifier with a new property value for the specified property name. Same asupdate(itemId, clazz, Collections.singletonMap(propertyName, propertyValue))
- Specified by:
update
in interfacePersistenceService
- Parameters:
item
- the item we want to updateclazz
- the Item subclass of the item to updatepropertyName
- the name of the property to updatepropertyValue
- the new value of the property- Returns:
true
if the update was successful,false
otherwise
-
update
public boolean update(Item item, Class clazz, Map source)
Description copied from interface:PersistenceService
Updates the item of the specified class and identified by the specified identifier with new property values provided as name - value pairs in the specified Map.- Specified by:
update
in interfacePersistenceService
- Parameters:
item
- the item we want to updateclazz
- the Item subclass of the item to updatesource
- a Map with entries specifying as key the property name to update and as value its new value- Returns:
true
if the update was successful,false
otherwise
-
update
public boolean update(Item item, Class clazz, Map source, boolean alwaysOverwrite)
Description copied from interface:PersistenceService
Updates the item of the specified class and identified by the specified identifier with new property values provided as name - value pairs in the specified Map.- Specified by:
update
in interfacePersistenceService
- Parameters:
item
- the item we want to updateclazz
- the Item subclass of the item to updatesource
- a Map with entries specifying as key the property name to update and as value its new valuealwaysOverwrite
- whether to overwrite a document even if we are holding an old item when saving- Returns:
true
if the update was successful,false
otherwise
-
update
public List<String> update(Map<Item,Map> items, Date dateHint, Class clazz)
- Specified by:
update
in interfacePersistenceService
-
updateWithQueryAndScript
public boolean updateWithQueryAndScript(Date dateHint, Class<?> clazz, String[] scripts, Map<String,Object>[] scriptParams, Condition[] conditions)
- Specified by:
updateWithQueryAndScript
in interfacePersistenceService
-
updateWithQueryAndScript
public boolean updateWithQueryAndScript(Class<?> clazz, String[] scripts, Map<String,Object>[] scriptParams, Condition[] conditions)
Description copied from interface:PersistenceService
Updates the items of the specified class by a query with a new property value for the specified property name based on provided scripts and script parameters- Specified by:
updateWithQueryAndScript
in interfacePersistenceService
- Parameters:
clazz
- the Item subclass of the item to updatescripts
- inline scripts arrayscriptParams
- script params arrayconditions
- conditions array- Returns:
true
if the update was successful,false
otherwise
-
updateWithQueryAndStoredScript
public boolean updateWithQueryAndStoredScript(Date dateHint, Class<?> clazz, String[] scripts, Map<String,Object>[] scriptParams, Condition[] conditions)
- Specified by:
updateWithQueryAndStoredScript
in interfacePersistenceService
-
updateWithQueryAndStoredScript
public boolean updateWithQueryAndStoredScript(Class<?> clazz, String[] scripts, Map<String,Object>[] scriptParams, Condition[] conditions)
Description copied from interface:PersistenceService
Updates the items of the specified class by a query with a new property value for the specified property name based on provided stored scripts and script parameters- Specified by:
updateWithQueryAndStoredScript
in interfacePersistenceService
- Parameters:
clazz
- the Item subclass of the item to updatescripts
- Stored scripts namescriptParams
- script params arrayconditions
- conditions array- Returns:
true
if the update was successful,false
otherwise
-
updateWithQueryAndStoredScript
public boolean updateWithQueryAndStoredScript(Class<?>[] classes, String[] scripts, Map<String,Object>[] scriptParams, Condition[] conditions, boolean waitForComplete)
Description copied from interface:PersistenceService
Updates the items of the specified class by a query with a new property value for the specified property name based on provided stored scripts and script parameters, This one is able to perform an update on multiple types in a single run, be careful with your query as it will be performed on all of them.- Specified by:
updateWithQueryAndStoredScript
in interfacePersistenceService
- Parameters:
classes
- classes of items to update, be careful all of them will be submitted to update for all scripts/conditionsscripts
- Stored scripts namescriptParams
- script params arrayconditions
- conditions arraywaitForComplete
- if true, wait for the ES execution to be complete- Returns:
true
if the update was successful,false
otherwise
-
storeScripts
public boolean storeScripts(Map<String,String> scripts)
Description copied from interface:PersistenceService
Store script in the Database for later usage with updateWithQueryAndStoredScript function for example.- Specified by:
storeScripts
in interfacePersistenceService
- Parameters:
scripts
- inline scripts map indexed by id- Returns:
true
if the update was successful,false
otherwise
-
updateWithScript
public boolean updateWithScript(Item item, Date dateHint, Class<?> clazz, String script, Map<String,Object> scriptParams)
- Specified by:
updateWithScript
in interfacePersistenceService
-
updateWithScript
public boolean updateWithScript(Item item, Class<?> clazz, String script, Map<String,Object> scriptParams)
Description copied from interface:PersistenceService
Updates the item of the specified class and identified by the specified identifier with a new property value for the specified property name. Same asupdate(itemId, clazz, Collections.singletonMap(propertyName, propertyValue))
- Specified by:
updateWithScript
in interfacePersistenceService
- Parameters:
item
- the item we want to updateclazz
- the Item subclass of the item to updatescript
- inline scriptscriptParams
- script params- Returns:
true
if the update was successful,false
otherwise
-
remove
public <T extends Item> boolean remove(String itemId, Class<T> clazz)
Description copied from interface:PersistenceService
Deletes the item identified with the specified identifier and with the specified Item subclass if it exists.- Specified by:
remove
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to delete- Parameters:
itemId
- the identifier of the item we want to deleteclazz
- theItem
subclass of the item we want to delete- Returns:
true
if the deletion was successful,false
otherwise
-
removeCustomItem
public boolean removeCustomItem(String itemId, String customItemType)
Description copied from interface:PersistenceService
Remove a custom item identified by the custom item identifier and the custom item type identifier- Specified by:
removeCustomItem
in interfacePersistenceService
- Parameters:
itemId
- the identifier of the custom item to be removedcustomItemType
- the name of the custom item type- Returns:
true
if the deletion was successful,false
otherwise
-
removeByQuery
public <T extends Item> boolean removeByQuery(Condition query, Class<T> clazz)
Description copied from interface:PersistenceService
Deletes items with the specified Item subclass matching the specifiedCondition
.- Specified by:
removeByQuery
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to delete- Parameters:
query
- aCondition
identifying which elements we want to deleteclazz
- theItem
subclass of the items we want to delete- Returns:
true
if the deletion was successful,false
otherwise
-
removeByQuery
public <T extends Item> boolean removeByQuery(org.elasticsearch.index.query.QueryBuilder queryBuilder, Class<T> clazz) throws Exception
- Throws:
Exception
-
indexTemplateExists
public boolean indexTemplateExists(String templateName)
-
removeIndexTemplate
public boolean removeIndexTemplate(String templateName)
-
registerRolloverLifecyclePolicy
public boolean registerRolloverLifecyclePolicy()
-
createIndex
public boolean createIndex(String itemType)
Description copied from interface:PersistenceService
Creates an index with for the specified item type in the persistence engine.TODO: remove from API?
- Specified by:
createIndex
in interfacePersistenceService
- Parameters:
itemType
- the item type- Returns:
true
if the operation was successful,false
otherwise
-
removeIndex
public boolean removeIndex(String itemType)
Description copied from interface:PersistenceService
Removes the index for the specified item type.TODO: remove from API?
- Specified by:
removeIndex
in interfacePersistenceService
- Parameters:
itemType
- the item type- Returns:
true
if the operation was successful,false
otherwise
-
createMapping
public void createMapping(String type, String source)
Description copied from interface:PersistenceService
Create mapping- Specified by:
createMapping
in interfacePersistenceService
- Parameters:
type
- the typesource
- the source
-
setPropertyMapping
public void setPropertyMapping(PropertyType property, String itemType)
Description copied from interface:PersistenceService
Create the persistence mapping for specific property for a given type.- Specified by:
setPropertyMapping
in interfacePersistenceService
- Parameters:
property
- the PropertyType to create mapping foritemType
- the itemType we want to retrieve the mappings for
-
getPropertiesMapping
public Map<String,Map<String,Object>> getPropertiesMapping(String itemType)
Description copied from interface:PersistenceService
Retrieve the type mappings for a given itemType. This method queries the persistence service implementation to retrieve any type mappings it may have for the specified itemType.This method may not return any results if the implementation doesn't support property type mappings
- Specified by:
getPropertiesMapping
in interfacePersistenceService
- Parameters:
itemType
- the itemType we want to retrieve the mappings for- Returns:
- properties mapping
-
getPropertyMapping
public Map<String,Object> getPropertyMapping(String property, String itemType)
Description copied from interface:PersistenceService
Retrieve the mapping for one specific property for a given type.- Specified by:
getPropertyMapping
in interfacePersistenceService
- Parameters:
property
- the property name (can use nested dot notation)itemType
- the itemType we want to retrieve the mappings for- Returns:
- property mapping
-
saveQuery
public boolean saveQuery(String queryName, Condition query)
Description copied from interface:PersistenceService
Persists the specified query under the specified name.- Specified by:
saveQuery
in interfacePersistenceService
- Parameters:
queryName
- the name under which the specified query should be recordedquery
- the query to be recorded- Returns:
true
if the query was properly saved,false
otherwise
-
removeQuery
public boolean removeQuery(String queryName)
Description copied from interface:PersistenceService
Deletes the query identified by the specified name.- Specified by:
removeQuery
in interfacePersistenceService
- Parameters:
queryName
- the name under which the specified query was recorded- Returns:
true
if the deletion was successful,false
otherwise
-
isValidCondition
public boolean isValidCondition(Condition condition, Item item)
Description copied from interface:PersistenceService
validates if a condition throws exception at query build.- Specified by:
isValidCondition
in interfacePersistenceService
- Parameters:
condition
- the condition we're testing the specified item againstitem
- the item we're checking against the specified condition- Returns:
true
if the item satisfies the condition,false
otherwise
-
testMatch
public boolean testMatch(Condition query, Item item)
Description copied from interface:PersistenceService
Checks whether the specified item satisfies the provided condition.TODO: rename to isMatching?
- Specified by:
testMatch
in interfacePersistenceService
- Parameters:
query
- the condition we're testing the specified item againstitem
- the item we're checking against the specified condition- Returns:
true
if the item satisfies the condition,false
otherwise
-
query
public <T extends Item> List<T> query(Condition query, String sortBy, Class<T> clazz)
Description copied from interface:PersistenceService
Same asquery(query, sortBy, clazz, 0, -1).getList()
- Specified by:
query
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
query
- theCondition
the items must satisfy to be retrievedsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.clazz
- theItem
subclass of the items we want to retrieve- Returns:
- a
PartialList
of items matching the specified criteria - See Also:
PersistenceService.query(Condition, String, Class, int, int)
-
query
public <T extends Item> PartialList<T> query(Condition query, String sortBy, Class<T> clazz, int offset, int size)
Description copied from interface:PersistenceService
Retrieves a list of items satisfying the specifiedCondition
, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.- Specified by:
query
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
query
- theCondition
the items must satisfy to be retrievedsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.clazz
- theItem
subclass of the items we want to retrieveoffset
- zero or a positive integer specifying the position of the first item in the total ordered collection of matching itemssize
- a positive integer specifying how many matching items should be retrieved or-1
if all of them should be retrieved- Returns:
- a
PartialList
of items matching the specified criteria
-
query
public <T extends Item> PartialList<T> query(Condition query, String sortBy, Class<T> clazz, int offset, int size, String scrollTimeValidity)
Description copied from interface:PersistenceService
Retrieves a list of items satisfying the specifiedCondition
, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one. If a scroll identifier and time validity are specified, they will be used to perform a scrolling query, meaning that only partial results will be returned, but the scrolling can be continued.- Specified by:
query
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
query
- theCondition
the items must satisfy to be retrievedsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.clazz
- theItem
subclass of the items we want to retrieveoffset
- zero or a positive integer specifying the position of the first item in the total ordered collection of matching itemssize
- a positive integer specifying how many matching items should be retrieved or-1
if all of them should be retrieved. In the case of a scroll query this will be used as the scrolling window size.scrollTimeValidity
- the time the scrolling query should stay valid. This must contain a time unit value such as the ones supported by ElasticSearch, such as the ones declared here : https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#time-units- Returns:
- a
PartialList
of items matching the specified criteria, with an scroll identifier and the scroll validity used if a scroll query was requested.
-
queryCustomItem
public PartialList<CustomItem> queryCustomItem(Condition query, String sortBy, String customItemType, int offset, int size, String scrollTimeValidity)
Description copied from interface:PersistenceService
Retrieves a list of items satisfying the specifiedCondition
, ordered according to the specifiedsortBy
String and paged: onlysize
of them are retrieved, starting with theoffset
-th one. If a scroll identifier and time validity are specified, they will be used to perform a scrolling query, meaning that only partial results will be returned, but the scrolling can be continued.- Specified by:
queryCustomItem
in interfacePersistenceService
- Parameters:
query
- theCondition
the items must satisfy to be retrievedsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.customItemType
- the identifier of the custom item type we want to queryoffset
- zero or a positive integer specifying the position of the first item in the total ordered collection of matching itemssize
- a positive integer specifying how many matching items should be retrieved or-1
if all of them should be retrieved. In the case of a scroll query this will be used as the scrolling window size.scrollTimeValidity
- the time the scrolling query should stay valid. This must contain a time unit value such as the ones supported by ElasticSearch, such as the ones declared here : https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#time-units- Returns:
- a
PartialList
of items matching the specified criteria, with an scroll identifier and the scroll validity used if a scroll query was requested.
-
queryFullText
public <T extends Item> PartialList<T> queryFullText(String fulltext, Condition query, String sortBy, Class<T> clazz, int offset, int size)
Description copied from interface:PersistenceService
Retrieves the same items asquery(query, sortBy, clazz, 0, -1)
with the added constraints that the matching elements must also have at least a field matching the specified full text query.- Specified by:
queryFullText
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
fulltext
- the text that the item must have in one of its fields to be considered a matchquery
- theCondition
the items must satisfy to be retrievedsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.clazz
- theItem
subclass of the items we want to retrieveoffset
- zero or a positive integer specifying the position of the first item in the total ordered collection of matching itemssize
- a positive integer specifying how many matching items should be retrieved or-1
if all of them should be retrieved- Returns:
- a
PartialList
of items matching the specified criteria
-
query
public <T extends Item> List<T> query(String fieldName, String fieldValue, String sortBy, Class<T> clazz)
Description copied from interface:PersistenceService
Same asquery(fieldName, fieldValue, sortBy, clazz, 0, -1).getList()
- Specified by:
query
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
fieldName
- the name of the field which we want items to have the specified valuesfieldValue
- the value the items to retrieve should have for the specified fieldsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.clazz
- theItem
subclass of the items we want to retrieve- Returns:
- a list of items matching the specified criteria
- See Also:
PersistenceService.query(Condition, String, Class, int, int)
-
query
public <T extends Item> List<T> query(String fieldName, String[] fieldValues, String sortBy, Class<T> clazz)
Description copied from interface:PersistenceService
Retrieves a list of items with the specified field having the specified values.- Specified by:
query
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
fieldName
- the name of the field which we want items to have the specified valuesfieldValues
- the values the items to retrieve should have for the specified fieldsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.clazz
- theItem
subclass of the items we want to retrieve- Returns:
- a list of items matching the specified criteria
-
query
public <T extends Item> PartialList<T> query(String fieldName, String fieldValue, String sortBy, Class<T> clazz, int offset, int size)
Description copied from interface:PersistenceService
Retrieves a list of items with the specified field having the specified value.- Specified by:
query
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
fieldName
- the name of the field which we want items to have the specified valuefieldValue
- the value the items to retrieve should have for the specified fieldsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.clazz
- theItem
subclass of the items we want to retrieveoffset
- zero or a positive integer specifying the position of the first item in the total ordered collection of matching itemssize
- a positive integer specifying how many matching items should be retrieved or-1
if all of them should be retrieved- Returns:
- a
PartialList
of items matching the specified criteria
-
queryFullText
public <T extends Item> PartialList<T> queryFullText(String fieldName, String fieldValue, String fulltext, String sortBy, Class<T> clazz, int offset, int size)
Description copied from interface:PersistenceService
Retrieves a list of items with the specified field having the specified value and having at least a field with the specified full text value in it, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.- Specified by:
queryFullText
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
fieldName
- the name of the field which we want items to have the specified valuefieldValue
- the value the items to retrieve should have for the specified fieldfulltext
- the text that the item must have in one of its fields to be considered a matchsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.clazz
- theItem
subclass of the items we want to retrieveoffset
- zero or a positive integer specifying the position of the first item in the total ordered collection of matching itemssize
- a positive integer specifying how many matching items should be retrieved or-1
if all of them should be retrieved- Returns:
- a
PartialList
of items matching the specified criteria
-
queryFullText
public <T extends Item> PartialList<T> queryFullText(String fulltext, String sortBy, Class<T> clazz, int offset, int size)
Description copied from interface:PersistenceService
Retrieves a list of items having at least a field with the specified full text value in it, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.- Specified by:
queryFullText
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
fulltext
- the text that the item must have in one of its fields to be considered a matchsortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.clazz
- theItem
subclass of the items we want to retrieveoffset
- zero or a positive integer specifying the position of the first item in the total ordered collection of matching itemssize
- a positive integer specifying how many matching items should be retrieved or-1
if all of them should be retrieved- Returns:
- a
PartialList
of items matching the specified criteria
-
rangeQuery
public <T extends Item> PartialList<T> rangeQuery(String fieldName, String from, String to, String sortBy, Class<T> clazz, int offset, int size)
Description copied from interface:PersistenceService
Retrieves all items of the specified Item subclass which specified ranged property is within the specified bounds, ordered according to the specifiedsortBy
String and and paged: onlysize
of them are retrieved, starting with theoffset
-th one.- Specified by:
rangeQuery
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
fieldName
- the name of the range property we want items to retrieve to be included between the specified start and end pointsfrom
- the beginning of the range we want to considerto
- the end of the range we want to considersortBy
- an optional (null
if no sorting is required) String of comma (,
) separated property names on which ordering should be performed, ordering elements according to the property order in the String, considering each in turn and moving on to the next one in case of equality of all preceding ones. Each property name is optionally followed by a column (:
) and an order specifier:asc
ordesc
.clazz
- theItem
subclass of the items we want to retrieveoffset
- zero or a positive integer specifying the position of the first item in the total ordered collection of matching itemssize
- a positive integer specifying how many matching items should be retrieved or-1
if all of them should be retrieved- Returns:
- a
PartialList
of items matching the specified criteria
-
queryCount
public long queryCount(Condition query, String itemType)
Description copied from interface:PersistenceService
Retrieves the number of items of the specified type as defined by the Item subclass public fieldITEM_TYPE
and matching the specifiedCondition
.- Specified by:
queryCount
in interfacePersistenceService
- Parameters:
query
- the condition the items must satisfyitemType
- the String representation of the item type we want to retrieve the count of, as defined by its class'ITEM_TYPE
field- Returns:
- the number of items of the specified type
- See Also:
Item for a discussion of
-
continueScrollQuery
public <T extends Item> PartialList<T> continueScrollQuery(Class<T> clazz, String scrollIdentifier, String scrollTimeValidity)
Description copied from interface:PersistenceService
Continues the execution of a scroll query, to retrieve the next results. If there are no more results the scroll query is also cleared.- Specified by:
continueScrollQuery
in interfacePersistenceService
- Type Parameters:
T
- the type of the Item subclass we want to retrieve- Parameters:
clazz
- theItem
subclass of the items we want to retrievescrollIdentifier
- a scroll identifier obtained by the execution of a first query and returned in thePartialList
objectscrollTimeValidity
- a scroll time validity value for the scroll query to stay valid. This must contain a time unit value such as the ones supported by ElasticSearch, such as the ones declared here : https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#time-units- Returns:
- a
PartialList
of items matching the specified criteria, with an scroll identifier and the scroll validity used if a scroll query was requested. Note that if there are no more results the list will be empty but not null.
-
continueCustomItemScrollQuery
public PartialList<CustomItem> continueCustomItemScrollQuery(String customItemType, String scrollIdentifier, String scrollTimeValidity)
Description copied from interface:PersistenceService
Continues the execution of a scroll query, to retrieve the next results. If there are no more results the scroll query is also cleared.- Specified by:
continueCustomItemScrollQuery
in interfacePersistenceService
- Parameters:
customItemType
- the identifier of the custom item type we want to continue queryingscrollIdentifier
- a scroll identifier obtained by the execution of a first query and returned in thePartialList
objectscrollTimeValidity
- a scroll time validity value for the scroll query to stay valid. This must contain a time unit value such as the ones supported by ElasticSearch, such as the ones declared here : https://www.elastic.co/guide/en/elasticsearch/reference/current/common-options.html#time-units- Returns:
- a
PartialList
of items matching the specified criteria, with an scroll identifier and the scroll validity used if a scroll query was requested. Note that if there are no more results the list will be empty but not null.
-
aggregateQuery
@Deprecated public Map<String,Long> aggregateQuery(Condition filter, BaseAggregate aggregate, String itemType)
Deprecated.As of version 1.3.0-incubating, useaggregateWithOptimizedQuery(Condition, BaseAggregate, String)
insteadDescription copied from interface:PersistenceService
Retrieves the number of items with the specified type as defined by the Item subclass public fieldITEM_TYPE
matching the optional specified condition and aggregated according to the specifiedBaseAggregate
. Also return the global count of document matching theITEM_TYPE
- Specified by:
aggregateQuery
in interfacePersistenceService
- Parameters:
filter
- the condition the items must match ornull
if no filtering is neededaggregate
- an aggregate specifying how matching items must be bundleditemType
- the String representation of the item type we want to retrieve the count of, as defined by its class'ITEM_TYPE
field- Returns:
- a Map associating aggregation dimension name as key and cardinality for that dimension as value
-
aggregateWithOptimizedQuery
public Map<String,Long> aggregateWithOptimizedQuery(Condition filter, BaseAggregate aggregate, String itemType)
Description copied from interface:PersistenceService
Retrieves the number of items with the specified type as defined by the Item subclass public fieldITEM_TYPE
matching the optional specified condition and aggregated according to the specifiedBaseAggregate
. This aggregate won't return the global count and should therefore be much faster thanPersistenceService.aggregateQuery(Condition, BaseAggregate, String)
- Specified by:
aggregateWithOptimizedQuery
in interfacePersistenceService
- Parameters:
filter
- the condition the items must match ornull
if no filtering is neededaggregate
- an aggregate specifying how matching items must be bundleditemType
- the String representation of the item type we want to retrieve the count of, as defined by its class'ITEM_TYPE
field- Returns:
- a Map associating aggregation dimension name as key and cardinality for that dimension as value
-
aggregateWithOptimizedQuery
public Map<String,Long> aggregateWithOptimizedQuery(Condition filter, BaseAggregate aggregate, String itemType, int size)
Description copied from interface:PersistenceService
Retrieves the number of items with the specified type as defined by the Item subclass public fieldITEM_TYPE
matching the optional specified condition and aggregated according to the specifiedBaseAggregate
.- Specified by:
aggregateWithOptimizedQuery
in interfacePersistenceService
- Parameters:
filter
- the condition the items must match ornull
if no filtering is neededaggregate
- an aggregate specifying how matching items must be bundleditemType
- the String representation of the item type we want to retrieve the count of, as defined by its class'ITEM_TYPE
fieldsize
- size of returned buckets in the response- Returns:
- a Map associating aggregation dimension name as key and cardinality for that dimension as value
-
refresh
public void refresh()
Description copied from interface:PersistenceService
Updates the persistence's engine indices if needed.- Specified by:
refresh
in interfacePersistenceService
-
refreshIndex
public <T extends Item> void refreshIndex(Class<T> clazz, Date dateHint)
- Specified by:
refreshIndex
in interfacePersistenceService
-
purge
public void purge(Date date)
Description copied from interface:PersistenceService
deprecated: (use: purgeTimeBasedItems instead)- Specified by:
purge
in interfacePersistenceService
-
purgeTimeBasedItems
public <T extends Item> void purgeTimeBasedItems(int existsNumberOfDays, Class<T> clazz)
Description copied from interface:PersistenceService
Purges time based data in the context server up to the specified days number of existence. (This only works for time based data stored in rolling over indices, it have no effect on other types)- Specified by:
purgeTimeBasedItems
in interfacePersistenceService
- Parameters:
existsNumberOfDays
- the number of daysclazz
- the item type to be purged
-
purge
public void purge(String scope)
Description copied from interface:PersistenceService
Removes all data associated with the provided scope.- Specified by:
purge
in interfacePersistenceService
- Parameters:
scope
- the scope for which we want to remove data
-
getSingleValuesMetrics
public Map<String,Double> getSingleValuesMetrics(Condition condition, String[] metrics, String field, String itemType)
Description copied from interface:PersistenceService
Retrieves the specified metrics for the specified field of items of the specified type as defined by the Item subclass public fieldITEM_TYPE
and matching the specifiedCondition
.- Specified by:
getSingleValuesMetrics
in interfacePersistenceService
- Parameters:
condition
- the condition the items must satisfymetrics
- a String array which metrics should be computed (possible values:sum
for the sum of the values,avg
for the average of the values,min
for the minimum value andmax
for the maximum value)field
- the name of the field for which the metrics should be computeditemType
- the String representation of the item type we want to retrieve the count of, as defined by its class'ITEM_TYPE
field- Returns:
- a Map associating computed metric name as key to its associated value
-
-