Class SiteElasticSearchIndexBuilder
- java.lang.Object
-
- org.sakaiproject.search.elasticsearch.BaseElasticSearchIndexBuilder
-
- org.sakaiproject.search.elasticsearch.SiteElasticSearchIndexBuilder
-
- All Implemented Interfaces:
org.sakaiproject.search.api.SearchIndexBuilder,org.sakaiproject.search.api.SiteSearchIndexBuilder,org.sakaiproject.search.elasticsearch.ElasticSearchIndexBuilder
public class SiteElasticSearchIndexBuilder extends BaseElasticSearchIndexBuilder implements org.sakaiproject.search.api.SiteSearchIndexBuilder
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classSiteElasticSearchIndexBuilder.RebuildSiteTask-
Nested classes/interfaces inherited from class org.sakaiproject.search.elasticsearch.BaseElasticSearchIndexBuilder
BaseElasticSearchIndexBuilder.BulkContentIndexerTask, BaseElasticSearchIndexBuilder.IndexAction, BaseElasticSearchIndexBuilder.NoOpTask, BaseElasticSearchIndexBuilder.RebuildIndexTask
-
-
Field Summary
Fields Modifier and Type Field Description protected static StringADD_RESOURCE_VALIDATION_KEY_SITE_IDprotected static StringDELETE_RESOURCE_KEY_SITE_IDprotected static StringSAKAI_DOC_TYPEprotected static StringSEARCH_TOOL_ID-
Fields inherited from class org.sakaiproject.search.elasticsearch.BaseElasticSearchIndexBuilder
ADD_RESOURCE_VALIDATION_KEY_CONTENT_PRODUCER, ADD_RESOURCE_VALIDATION_KEY_ENTITY_ID, ADD_RESOURCE_VALIDATION_KEY_INDEX_ACTION, ADD_RESOURCE_VALIDATION_KEY_RESOURCE_NAME, allowAllAdvisor, backgroundScheduler, bulkRequestSize, client, contentIndexBatchSize, DEFAULT_FACET_NAME, DEFAULT_SUGGESTION_MATCHING_FIELD_NAME, defaultIndexSettingsResource, defaultMappingResource, delay, DELETE_RESOURCE_KEY_DOCUMENT_ID, DELETE_RESOURCE_KEY_ENTITY_REFERENCE, eventRegistrar, eventTrackingService, facetName, facetTermSize, filter, indexedDocumentType, indexName, indexSettings, indexSettingsConfig, lastLoad, mapping, mappingConfig, maxNumberOfSuggestions, name, period, producers, rebuildIndexOnStartup, searchResultFieldNames, securityService, serverConfigurationService, startTime, suggestionMatchingFieldName, suggestionResultFieldNames, testMode, triggerFunctions, useFacetting, useSuggestions
-
-
Constructor Summary
Constructors Constructor Description SiteElasticSearchIndexBuilder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.elasticsearch.xcontent.XContentBuilderaddFields(org.elasticsearch.xcontent.XContentBuilder contentSourceBuilder, String resourceName, org.sakaiproject.search.api.EntityContentProducer ecp, boolean includeContent)protected voidaddSearchSiteIds(org.elasticsearch.action.search.SearchRequest searchRequest, List<String> siteIds)protected voidaddSearchSuggestionsSites(org.elasticsearch.action.search.SearchRequest searchRequest, String currentSite, boolean allMySites)protected voidaddSearchSuggestionsTerms(org.elasticsearch.action.search.SearchRequest searchRequest, String searchString)protected voidbeforeBackgroundSchedulerInitialization()Called after all ES config has been processed but before the background scheduler has been set up and before any index startup ops have been invoked (BaseElasticSearchIndexBuilder.initializeIndex().protected voidbeforeElasticSearchConfigInitialization()Gives subclasses a chance to initialize configuration prior to reading/processing any ES configs.protected voidcompleteAddResourceEventValidations(org.sakaiproject.event.api.Event event, Map<String,Object> validationContext)protected org.elasticsearch.action.delete.DeleteRequestcompleteDeleteRequest(org.elasticsearch.action.delete.DeleteRequest deleteRequest, Map<String,Object> deleteParams)protected org.elasticsearch.action.search.SearchRequestcompleteFindContentQueueRequest(org.elasticsearch.action.search.SearchRequest searchRequest)protected org.elasticsearch.action.index.IndexRequestcompleteIndexRequest(org.elasticsearch.action.index.IndexRequest indexRequest, String resourceName, org.sakaiproject.search.api.EntityContentProducer ecp, boolean includeContent)protected voidcompleteSearchRequestBuilders(org.elasticsearch.action.search.SearchRequest searchRequest, String searchTerms, List<String> references, List<String> siteIds)protected voidcompleteSearchSuggestionsRequestBuilders(org.elasticsearch.action.search.SearchRequest searchRequest, String searchString, String currentSite, boolean allMySites)protected voiddeleteAllDocumentForSite(String siteId)protected voiddeleteDocument(String id, String siteId)protected Map<String,Object>extractDeleteDocumentParams(Map<String,Object> validationContext)protected Map<String,Object>extractDeleteDocumentParams(org.elasticsearch.search.SearchHit searchHit)protected Map<String,Object>extractDeleteDocumentParams(NoContentException noContentException)protected String[]getAllUsersSites(String currentUser)Get all the sites a user has access to.StringgetEventResourceFilter()protected org.slf4j.LoggergetLog()protected Collection<String>getResourceNames(String siteId)Get all indexed resources for a siteList<org.sakaiproject.search.model.SearchBuilderItem>getSiteMasterSearchItems()booleanisExcludeUserSites()booleanisOnlyIndexSearchToolSites()protected booleanisSiteIndexable(org.sakaiproject.site.api.Site site)Check if a site is considered as indexable based on the current server configuration.protected org.elasticsearch.xcontent.XContentBuildernoContentForIndexRequest(org.elasticsearch.xcontent.XContentBuilder contentSourceBuilder, String resourceName, org.sakaiproject.search.api.EntityContentProducer ecp, boolean includeContent)protected voidnoContentProducerForContentQueueEntry(org.elasticsearch.search.SearchHit hit, String reference)voidrebuildIndex(String siteId)Rebuild the index from the entities own stored state , for just the supplied siteIdprotected voidrebuildIndexImmediately()protected voidrebuildSiteIndex(String siteId)voidrefreshIndex(String siteId)Refresh the index for the supplied site.voidsetExcludeUserSites(boolean excludeUserSites)voidsetIgnoredSites(String ignoredSites)voidsetIgnoredSitesList(List<String> ignoredSitesList)voidsetOnlyIndexSearchToolSites(boolean onlyIndexSearchToolSites)voidsetSiteService(org.sakaiproject.site.api.SiteService siteService)voidsetUserDirectoryService(org.sakaiproject.user.api.UserDirectoryService userDirectoryService)voidsetUseSiteFilters(boolean useSiteFilters)-
Methods inherited from class org.sakaiproject.search.elasticsearch.BaseElasticSearchIndexBuilder
addContent, addCustomProperties, addFindContentQueueRequestParams, addResource, addSearchCoreParams, addSearchFacetting, addSearchPagination, addSearchQuery, addSearchReferences, addSearchResultFields, addSearchSuggestionResultFields, addSearchSuggestionsCoreParams, addSearchSuggestionsPagination, addSearchSuggestionsQuery, addSearchTerms, assureIndex, buildIndexRequestContentSource, completeIndexRequestContentSourceBuilder, createIndex, deleteDocument, deleteDocument, deleteDocumentWithParams, deleteDocumentWithRequest, destroy, disableAzgSecurityAdvisor, dispatchValidatedAddResource, enableAzgSecurityAdvisor, executeBulkRequest, extractCustomProperties, findContentQueue, findContentQueueWithRequest, getAllSearchItems, getContentFunctions, getContentProducers, getFacetName, getFieldFromSearchHit, getFilter, getGlobalMasterSearchItems, getIndexHealth, getIndices, getName, getNDocs, getPendingDocuments, getSearchStatus, getStatus, getTriggerFunctions, getUseFacetting, indexAdd, initialize, initializeBackgroundScheduler, initializeContentQueueProcessingTask, initializeElasticSearchIndexSettings, initializeElasticSearchMapping, initializeIndex, isBuildQueueEmpty, isEnabled, isSupportedIndexAction, matchEntityContentProducer, newBulkContentIndexerTask, newEntityContentProducer, newEntityContentProducer, newIndexRequest, newIndexRequestContentSourceBuilder, newRebuildIndexTask, newSearchRequestAndQueryBuilders, newSearchSuggestionsRequestAndQueryBuilders, pairOf, prepareDeleteDocument, prepareFindContentQueue, prepareIndex, prepareIndexAdd, prepareSearchRequest, prepareSearchSuggestionsRequest, processContentQueue, processContentQueueEntry, rebuildIndex, recreateIndex, refreshIndex, registerEntityContentProducer, requireConfiguration, roundTwoDecimals, search, search, searchSuggestions, setBulkRequestSize, setContentIndexBatchSize, setDefaultIndexSettingsResource, setDefaultMappingResource, setDelay, setEventTrackingService, setFacetName, setFacetTermSize, setFilter, setIndexedDocumentType, setIndexName, setIndexSettingsConfig, setMappingConfig, setMaxNumberOfSuggestions, setName, setPeriod, setRebuildIndexOnStartup, setSearchResultFieldNames, setSecurityService, setServerConfigurationService, setSuggestionMatchingFieldName, setSuggestionResultFieldNames, setTestMode, setTriggerFunctions, setUseFacetting, setUseSuggestions, validateAddResourceEvent, validateContentProducer, validateIndexable, validateIndexAction, validateResourceName, validateServiceEnabled
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.sakaiproject.search.api.SearchIndexBuilder
addResource, destroy, getAllSearchItems, getContentProducers, getGlobalMasterSearchItems, getName, getPendingDocuments, isBuildQueueEmpty, newEntityContentProducer, newEntityContentProducer, rebuildIndex, refreshIndex, registerEntityContentProducer
-
-
-
-
Field Detail
-
SEARCH_TOOL_ID
protected static final String SEARCH_TOOL_ID
- See Also:
- Constant Field Values
-
SAKAI_DOC_TYPE
protected static final String SAKAI_DOC_TYPE
- See Also:
- Constant Field Values
-
ADD_RESOURCE_VALIDATION_KEY_SITE_ID
protected static final String ADD_RESOURCE_VALIDATION_KEY_SITE_ID
- See Also:
- Constant Field Values
-
DELETE_RESOURCE_KEY_SITE_ID
protected static final String DELETE_RESOURCE_KEY_SITE_ID
- See Also:
- Constant Field Values
-
-
Method Detail
-
beforeElasticSearchConfigInitialization
protected void beforeElasticSearchConfigInitialization()
Description copied from class:BaseElasticSearchIndexBuilderGives subclasses a chance to initialize configuration prior to reading/processing any ES configs. May be important for setting up defaults, for example, or for ensuring subclass-specific configs are in place before any background tasks are in place. (Though the latter would be better factored intoBaseElasticSearchIndexBuilder.beforeBackgroundSchedulerInitialization()- Specified by:
beforeElasticSearchConfigInitializationin classBaseElasticSearchIndexBuilder
-
beforeBackgroundSchedulerInitialization
protected void beforeBackgroundSchedulerInitialization()
Description copied from class:BaseElasticSearchIndexBuilderCalled after all ES config has been processed but before the background scheduler has been set up and before any index startup ops have been invoked (BaseElasticSearchIndexBuilder.initializeIndex(). I.e. this is a subclass's last chance to set up any configs on which background jobs and/or index maintenance in general might depend.- Specified by:
beforeBackgroundSchedulerInitializationin classBaseElasticSearchIndexBuilder
-
completeAddResourceEventValidations
protected void completeAddResourceEventValidations(org.sakaiproject.event.api.Event event, Map<String,Object> validationContext) throws IllegalArgumentException, IllegalStateException- Specified by:
completeAddResourceEventValidationsin classBaseElasticSearchIndexBuilder- Throws:
IllegalArgumentExceptionIllegalStateException
-
extractDeleteDocumentParams
protected Map<String,Object> extractDeleteDocumentParams(Map<String,Object> validationContext)
- Overrides:
extractDeleteDocumentParamsin classBaseElasticSearchIndexBuilder
-
extractDeleteDocumentParams
protected Map<String,Object> extractDeleteDocumentParams(NoContentException noContentException)
- Overrides:
extractDeleteDocumentParamsin classBaseElasticSearchIndexBuilder
-
extractDeleteDocumentParams
protected Map<String,Object> extractDeleteDocumentParams(org.elasticsearch.search.SearchHit searchHit)
- Overrides:
extractDeleteDocumentParamsin classBaseElasticSearchIndexBuilder
-
completeDeleteRequest
protected org.elasticsearch.action.delete.DeleteRequest completeDeleteRequest(org.elasticsearch.action.delete.DeleteRequest deleteRequest, Map<String,Object> deleteParams)- Specified by:
completeDeleteRequestin classBaseElasticSearchIndexBuilder
-
addFields
protected org.elasticsearch.xcontent.XContentBuilder addFields(org.elasticsearch.xcontent.XContentBuilder contentSourceBuilder, String resourceName, org.sakaiproject.search.api.EntityContentProducer ecp, boolean includeContent) throws IOException- Specified by:
addFieldsin classBaseElasticSearchIndexBuilder- Throws:
IOException
-
noContentForIndexRequest
protected org.elasticsearch.xcontent.XContentBuilder noContentForIndexRequest(org.elasticsearch.xcontent.XContentBuilder contentSourceBuilder, String resourceName, org.sakaiproject.search.api.EntityContentProducer ecp, boolean includeContent) throws NoContentException- Specified by:
noContentForIndexRequestin classBaseElasticSearchIndexBuilder- Throws:
NoContentException
-
noContentProducerForContentQueueEntry
protected void noContentProducerForContentQueueEntry(org.elasticsearch.search.SearchHit hit, String reference) throws NoContentException- Overrides:
noContentProducerForContentQueueEntryin classBaseElasticSearchIndexBuilder- Throws:
NoContentException
-
completeFindContentQueueRequest
protected org.elasticsearch.action.search.SearchRequest completeFindContentQueueRequest(org.elasticsearch.action.search.SearchRequest searchRequest)
- Specified by:
completeFindContentQueueRequestin classBaseElasticSearchIndexBuilder
-
rebuildSiteIndex
protected void rebuildSiteIndex(String siteId)
-
rebuildIndexImmediately
protected void rebuildIndexImmediately()
- Specified by:
rebuildIndexImmediatelyin classBaseElasticSearchIndexBuilder
-
isSiteIndexable
protected boolean isSiteIndexable(org.sakaiproject.site.api.Site site)
Check if a site is considered as indexable based on the current server configuration.Not indexable sites are:
- Special sites
- Sites without the search tool (if the option is enabled)
- User sites (if the option is enabled)
- Any sites included in the ignoreSitesList (~admin and !admin are the default ignored sites)
- Parameters:
site- site which may be indexable- Returns:
- true if the site can be index, false otherwise
-
getSiteMasterSearchItems
public List<org.sakaiproject.search.model.SearchBuilderItem> getSiteMasterSearchItems()
- Specified by:
getSiteMasterSearchItemsin interfaceorg.sakaiproject.search.api.SiteSearchIndexBuilder
-
rebuildIndex
public void rebuildIndex(String siteId)
Rebuild the index from the entities own stored state , for just the supplied siteId- Specified by:
rebuildIndexin interfaceorg.sakaiproject.search.api.SiteSearchIndexBuilder
-
deleteAllDocumentForSite
protected void deleteAllDocumentForSite(String siteId)
-
refreshIndex
public void refreshIndex(String siteId)
Refresh the index for the supplied site. This simply refreshes the docs that ES already knows about. It does not create any new docs. If you want to reload all site content you need to do a {@see rebuildIndex()}- Specified by:
refreshIndexin interfaceorg.sakaiproject.search.api.SiteSearchIndexBuilder
-
getResourceNames
protected Collection<String> getResourceNames(String siteId)
Get all indexed resources for a site- Parameters:
siteId- Site containing indexed resources- Returns:
- a collection of resource references or an empty collection if no resource was found
-
completeIndexRequest
protected org.elasticsearch.action.index.IndexRequest completeIndexRequest(org.elasticsearch.action.index.IndexRequest indexRequest, String resourceName, org.sakaiproject.search.api.EntityContentProducer ecp, boolean includeContent)- Specified by:
completeIndexRequestin classBaseElasticSearchIndexBuilder
-
addSearchSiteIds
protected void addSearchSiteIds(org.elasticsearch.action.search.SearchRequest searchRequest, List<String> siteIds)- Specified by:
addSearchSiteIdsin classBaseElasticSearchIndexBuilder
-
completeSearchRequestBuilders
protected void completeSearchRequestBuilders(org.elasticsearch.action.search.SearchRequest searchRequest, String searchTerms, List<String> references, List<String> siteIds)- Specified by:
completeSearchRequestBuildersin classBaseElasticSearchIndexBuilder
-
addSearchSuggestionsTerms
protected void addSearchSuggestionsTerms(org.elasticsearch.action.search.SearchRequest searchRequest, String searchString)- Specified by:
addSearchSuggestionsTermsin classBaseElasticSearchIndexBuilder
-
addSearchSuggestionsSites
protected void addSearchSuggestionsSites(org.elasticsearch.action.search.SearchRequest searchRequest, String currentSite, boolean allMySites)- Specified by:
addSearchSuggestionsSitesin classBaseElasticSearchIndexBuilder
-
getAllUsersSites
protected String[] getAllUsersSites(String currentUser)
Get all the sites a user has access to.- Returns:
- An array of site IDs.
-
completeSearchSuggestionsRequestBuilders
protected void completeSearchSuggestionsRequestBuilders(org.elasticsearch.action.search.SearchRequest searchRequest, String searchString, String currentSite, boolean allMySites)- Specified by:
completeSearchSuggestionsRequestBuildersin classBaseElasticSearchIndexBuilder
-
isOnlyIndexSearchToolSites
public boolean isOnlyIndexSearchToolSites()
- Specified by:
isOnlyIndexSearchToolSitesin interfaceorg.sakaiproject.search.api.SiteSearchIndexBuilder- Returns:
- the onlyIndexSearchToolSites
-
setOnlyIndexSearchToolSites
public void setOnlyIndexSearchToolSites(boolean onlyIndexSearchToolSites)
- Parameters:
onlyIndexSearchToolSites- the onlyIndexSearchToolSites to set
-
setExcludeUserSites
public void setExcludeUserSites(boolean excludeUserSites)
-
isExcludeUserSites
public boolean isExcludeUserSites()
- Specified by:
isExcludeUserSitesin interfaceorg.sakaiproject.search.api.SiteSearchIndexBuilder
-
setUseSiteFilters
public void setUseSiteFilters(boolean useSiteFilters)
-
setSiteService
public void setSiteService(org.sakaiproject.site.api.SiteService siteService)
-
setIgnoredSites
public void setIgnoredSites(String ignoredSites)
-
setUserDirectoryService
public void setUserDirectoryService(org.sakaiproject.user.api.UserDirectoryService userDirectoryService)
-
getEventResourceFilter
public String getEventResourceFilter()
- Specified by:
getEventResourceFilterin interfaceorg.sakaiproject.search.elasticsearch.ElasticSearchIndexBuilder
-
getLog
protected org.slf4j.Logger getLog()
- Specified by:
getLogin classBaseElasticSearchIndexBuilder
-
-