public final class SolrCore extends Object implements SolrInfoMBean, Closeable
Modifier and Type | Class and Description |
---|---|
class |
SolrCore.LazyQueryResponseWriterWrapper |
SolrInfoMBean.Category
Modifier and Type | Field and Description |
---|---|
static Map<String,QueryResponseWriter> |
DEFAULT_RESPONSE_WRITERS |
static org.slf4j.Logger |
log |
static AtomicLong |
numCloses |
static AtomicLong |
numOpens |
static Map<SolrCore,Exception> |
openHandles |
static boolean |
VERBOSE |
static String |
version |
Constructor and Description |
---|
SolrCore(CoreDescriptor cd,
ConfigSet coreConfig) |
SolrCore(String name,
CoreDescriptor cd)
Creates a new core that is to be loaded lazily.
|
SolrCore(String name,
String dataDir,
SolrConfig config,
IndexSchema schema,
CoreDescriptor cd)
Creates a new core and register it in the list of cores.
|
SolrCore(String name,
String dataDir,
SolrConfig config,
IndexSchema schema,
CoreDescriptor cd,
UpdateHandler updateHandler,
IndexDeletionPolicyWrapper delPolicy,
SolrCore prev)
Creates a new core and register it in the list of cores.
|
Modifier and Type | Method and Description |
---|---|
void |
addCloseHook(CloseHook hook)
Add a close callback hook
|
void |
addTransformerFactory(String name,
TransformerFactory factory) |
void |
close()
Close all resources allocated by the core if it is no longer in use...
|
void |
closeSearcher() |
SolrEventListener |
createEventListener(String className) |
<T> T |
createInitInstance(PluginInfo info,
Class<T> cast,
String msg,
String defClassName) |
SolrRequestHandler |
createRequestHandler(String className) |
static void |
deleteUnloadedCore(CoreDescriptor cd,
boolean deleteDataDir,
boolean deleteInstanceDir) |
void |
execute(SolrRequestHandler handler,
SolrQueryRequest req,
SolrQueryResponse rsp) |
protected void |
finalize() |
SolrInfoMBean.Category |
getCategory()
Purpose of this Class
|
Codec |
getCodec() |
String |
getConfigResource()
Gets the configuration resource name used by this core instance.
|
CoreDescriptor |
getCoreDescriptor() |
String |
getDataDir() |
IndexDeletionPolicyWrapper |
getDeletionPolicy() |
String |
getDescription()
Simple one or two line description
|
DirectoryFactory |
getDirectoryFactory() |
URL[] |
getDocs()
Documentation URL list.
|
String |
getIndexDir() |
IndexReaderFactory |
getIndexReaderFactory() |
Map<String,SolrInfoMBean> |
getInfoRegistry()
Returns a Map of name vs SolrInfoMBean objects.
|
IndexSchema |
getLatestSchema() |
String |
getLogId() |
String |
getName()
Simple common usage name, e.g.
|
RefCounted<SolrIndexSearcher> |
getNewestSearcher(boolean openNew)
Return the newest normal
RefCounted <SolrIndexSearcher > with
the reference count incremented. |
String |
getNewIndexDir()
Returns the indexdir as given in index.properties.
|
int |
getOpenCount()
Current core usage count.
|
QParserPlugin |
getQueryPlugin(String parserName) |
QueryResponseWriter |
getQueryResponseWriter(SolrQueryRequest request)
Returns the appropriate writer for a request.
|
QueryResponseWriter |
getQueryResponseWriter(String writerName)
Finds a writer by name, or returns the default writer if not found.
|
RefCounted<SolrIndexSearcher> |
getRealtimeSearcher()
Gets the latest real-time searcher w/o forcing open a new searcher if one already exists.
|
RefCounted<SolrIndexSearcher> |
getRegisteredSearcher()
Returns the current registered searcher with its reference count incremented, or null if none are registered.
|
SolrRequestHandler |
getRequestHandler(String handlerName)
Get the request handler registered to a given name.
|
Map<String,SolrRequestHandler> |
getRequestHandlers()
Returns an unmodifiable Map containing the registered handlers
|
<T extends SolrRequestHandler> |
getRequestHandlers(Class<T> clazz)
Returns an unmodifiable Map containing the registered handlers of the specified type.
|
SolrResourceLoader |
getResourceLoader()
The SolrResourceLoader used to load all resources for this core.
|
RestManager |
getRestManager() |
ReentrantLock |
getRuleExpiryLock() |
String |
getSchemaResource()
Gets the schema resource name used by this core instance.
|
SearchComponent |
getSearchComponent(String name) |
Map<String,SearchComponent> |
getSearchComponents()
Accessor for all the Search Components
|
RefCounted<SolrIndexSearcher> |
getSearcher()
Return a registered
RefCounted <SolrIndexSearcher > with
the reference count incremented. |
RefCounted<SolrIndexSearcher> |
getSearcher(boolean forceNew,
boolean returnSearcher,
Future[] waitSearcher) |
RefCounted<SolrIndexSearcher> |
getSearcher(boolean forceNew,
boolean returnSearcher,
Future[] waitSearcher,
boolean updateHandlerReopens)
Get a
SolrIndexSearcher or start the process of creating a new one. |
SolrConfig |
getSolrConfig()
Gets the configuration object used by this core instance.
|
SolrCoreState |
getSolrCoreState() |
String |
getSource()
CVS Source, SVN Source, etc
|
long |
getStartTime() |
NamedList |
getStatistics()
Any statistics this instance would like to be publicly available via
the Solr Administration interface.
|
TransformerFactory |
getTransformerFactory(String name) |
UpdateHandler |
getUpdateHandler()
RequestHandlers need access to the updateHandler so they can all talk to the
same RAM indexer.
|
UpdateRequestProcessorChain |
getUpdateProcessingChain(String name) |
ValueSourceParser |
getValueSourceParser(String parserName) |
String |
getVersion()
Simple common usage version, e.g.
|
<T> List<T> |
initPlugins(List<PluginInfo> pluginInfos,
Class<T> type,
String defClassName)
For a given List of PluginInfo return the instances as a List
|
<T> T |
initPlugins(List<PluginInfo> pluginInfos,
Map<String,T> registry,
Class<T> type,
String defClassName) |
<T> T |
initPlugins(Map<String,T> registry,
Class<T> type) |
<T> T |
initPlugins(Map<String,T> registry,
Class<T> type,
String defClassName) |
protected RestManager |
initRestManager()
Creates and initializes a RestManager based on configuration args in solrconfig.xml.
|
boolean |
isClosed()
Whether this core is closed.
|
boolean |
isReloaded() |
static void |
log(Throwable e) |
SolrIndexSearcher |
newSearcher(String name) |
void |
open()
expert: increments the core reference count
|
RefCounted<SolrIndexSearcher> |
openNewSearcher(boolean updateHandlerReopens,
boolean realtime)
Opens a new searcher and returns a RefCounted<SolrIndexSearcher> with it's reference incremented.
|
static void |
postDecorateResponse(SolrRequestHandler handler,
SolrQueryRequest req,
SolrQueryResponse rsp)
Put status, QTime, and possibly request handler and params, in the response header
|
static void |
preDecorateResponse(SolrQueryRequest req,
SolrQueryResponse rsp) |
void |
registerFirstSearcherListener(SolrEventListener listener)
NOTE: this function is not thread safe.
|
void |
registerNewSearcherListener(SolrEventListener listener)
NOTE: this function is not thread safe.
|
SolrRequestHandler |
registerRequestHandler(String handlerName,
SolrRequestHandler handler)
Registers a handler at the specified location.
|
QueryResponseWriter |
registerResponseWriter(String name,
QueryResponseWriter responseWriter)
NOTE: this function is not thread safe.
|
SolrCore |
reload(ConfigSet coreConfig,
SolrCore prev) |
void |
setLatestSchema(IndexSchema replacementSchema)
Sets the latest schema snapshot to be used by this core instance.
|
void |
setName(String v) |
void |
unloadOnClose(boolean deleteIndexDir,
boolean deleteDataDir,
boolean deleteInstanceDir) |
static void |
verbose(Object... args) |
public static final String version
public static final AtomicLong numOpens
public static final AtomicLong numCloses
public static org.slf4j.Logger log
public static boolean VERBOSE
public static final Map<String,QueryResponseWriter> DEFAULT_RESPONSE_WRITERS
public SolrCore(String name, String dataDir, SolrConfig config, IndexSchema schema, CoreDescriptor cd)
dataDir
- the index directoryconfig
- a solr config instanceschema
- a solr schema instancepublic SolrCore(CoreDescriptor cd, ConfigSet coreConfig)
public SolrCore(String name, CoreDescriptor cd)
public SolrCore(String name, String dataDir, SolrConfig config, IndexSchema schema, CoreDescriptor cd, UpdateHandler updateHandler, IndexDeletionPolicyWrapper delPolicy, SolrCore prev)
dataDir
- the index directoryconfig
- a solr config instanceschema
- a solr schema instancepublic long getStartTime()
public RestManager getRestManager()
public SolrResourceLoader getResourceLoader()
public String getConfigResource()
public SolrConfig getSolrConfig()
public String getSchemaResource()
public IndexSchema getLatestSchema()
public void setLatestSchema(IndexSchema replacementSchema)
public String getDataDir()
public String getIndexDir()
public String getNewIndexDir()
public DirectoryFactory getDirectoryFactory()
public IndexReaderFactory getIndexReaderFactory()
public String getName()
SolrInfoMBean
getName
in interface SolrInfoMBean
public void setName(String v)
public String getLogId()
public Map<String,SolrInfoMBean> getInfoRegistry()
public void registerFirstSearcherListener(SolrEventListener listener)
inform( SolrCore core )
function for SolrCoreAware
classes.
Outside inform
, this could potentially throw a ConcurrentModificationExceptionSolrCoreAware
public void registerNewSearcherListener(SolrEventListener listener)
inform( SolrCore core )
function for SolrCoreAware
classes.
Outside inform
, this could potentially throw a ConcurrentModificationExceptionSolrCoreAware
public QueryResponseWriter registerResponseWriter(String name, QueryResponseWriter responseWriter)
inform( SolrCore core )
function for SolrCoreAware
classes.
Outside inform
, this could potentially throw a ConcurrentModificationExceptionSolrCoreAware
public SolrCore reload(ConfigSet coreConfig, SolrCore prev) throws IOException, ParserConfigurationException, SAXException
public SolrIndexSearcher newSearcher(String name) throws IOException
IOException
public <T> T createInitInstance(PluginInfo info, Class<T> cast, String msg, String defClassName)
public SolrEventListener createEventListener(String className)
public SolrRequestHandler createRequestHandler(String className)
public SolrCoreState getSolrCoreState()
public UpdateRequestProcessorChain getUpdateProcessingChain(String name)
public void open()
public void close()
The behavior of this method is determined by the result of decrementing the core's reference count (A core is created with a reference count of 1)...
close
in interface Closeable
close
in interface AutoCloseable
isClosed()
public int getOpenCount()
public boolean isClosed()
protected void finalize() throws Throwable
public void addCloseHook(CloseHook hook)
public static void verbose(Object... args)
public SolrRequestHandler getRequestHandler(String handlerName)
public <T extends SolrRequestHandler> Map<String,T> getRequestHandlers(Class<T> clazz)
public Map<String,SolrRequestHandler> getRequestHandlers()
public SolrRequestHandler registerRequestHandler(String handlerName, SolrRequestHandler handler)
null
at its path
Once registered the handler can be accessed through:
http://${host}:${port}/${context}/${handlerName} or: http://${host}:${port}/${context}/select?qt=${handlerName}Handlers must be initialized before getting registered. Registered handlers can immediately accept requests. This call is thread safe.
SolrRequestHandler
registered to this name null
if none.public SearchComponent getSearchComponent(String name)
public Map<String,SearchComponent> getSearchComponents()
public UpdateHandler getUpdateHandler()
public RefCounted<SolrIndexSearcher> getSearcher()
RefCounted
<SolrIndexSearcher
> with
the reference count incremented. It must be decremented when no longer needed.
This method should not be called from SolrCoreAware.inform() since it can result
in a deadlock if useColdSearcher==false.
If handling a normal request, the searcher should be obtained from
SolrQueryRequest.getSearcher()
instead.public RefCounted<SolrIndexSearcher> getRegisteredSearcher()
public RefCounted<SolrIndexSearcher> getNewestSearcher(boolean openNew)
RefCounted
<SolrIndexSearcher
> with
the reference count incremented. It must be decremented when no longer needed.
If no searcher is currently open, then if openNew==true a new searcher will be opened,
or null is returned if openNew==false.public RefCounted<SolrIndexSearcher> getRealtimeSearcher()
public RefCounted<SolrIndexSearcher> getSearcher(boolean forceNew, boolean returnSearcher, Future[] waitSearcher)
public RefCounted<SolrIndexSearcher> openNewSearcher(boolean updateHandlerReopens, boolean realtime)
public RefCounted<SolrIndexSearcher> getSearcher(boolean forceNew, boolean returnSearcher, Future[] waitSearcher, boolean updateHandlerReopens)
SolrIndexSearcher
or start the process of creating a new one.
The registered searcher is the default searcher used to service queries. A searcher will normally be registered after all of the warming and event handlers (newSearcher or firstSearcher events) have run. In the case where there is no registered searcher, the newly created searcher will be registered before running the event handlers (a slow searcher is better than no searcher).
These searchers contain read-only IndexReaders. To access a non read-only IndexReader, see newSearcher(String name, boolean readOnly).
If forceNew==true then A new searcher will be opened and registered regardless of whether there is already a registered searcher or other searchers in the process of being created.
If forceNew==false then:
If returnSearcher==true then a RefCounted
<SolrIndexSearcher
> will be returned with
the reference count incremented. It must be decremented when no longer needed.
If waitSearcher!=null and a new SolrIndexSearcher
was created,
then it is filled in with a Future that will return after the searcher is registered. The Future may be set to
null in which case the SolrIndexSearcher created has already been registered at the time
this method returned.
forceNew
- if true, force the open of a new index searcher regardless if there is already one open.returnSearcher
- if true, returns a SolrIndexSearcher
holder with the refcount already incremented.waitSearcher
- if non-null, will be filled in with a Future
that will return after the new searcher is registered.updateHandlerReopens
- if true, the UpdateHandler will be used when reopening a SolrIndexSearcher
.public boolean isReloaded()
public void closeSearcher()
public void execute(SolrRequestHandler handler, SolrQueryRequest req, SolrQueryResponse rsp)
public static void preDecorateResponse(SolrQueryRequest req, SolrQueryResponse rsp)
public static void postDecorateResponse(SolrRequestHandler handler, SolrQueryRequest req, SolrQueryResponse rsp)
public static final void log(Throwable e)
public final QueryResponseWriter getQueryResponseWriter(String writerName)
public final QueryResponseWriter getQueryResponseWriter(SolrQueryRequest request)
public QParserPlugin getQueryPlugin(String parserName)
public TransformerFactory getTransformerFactory(String name)
public void addTransformerFactory(String name, TransformerFactory factory)
public <T> T initPlugins(Map<String,T> registry, Class<T> type, String defClassName)
registry
- The map to which the instance should be added to. The key is the name attributetype
- the class or interface that the instance should extend or implement.defClassName
- If PluginInfo does not have a classname, use this as the classnamepublic <T> T initPlugins(List<PluginInfo> pluginInfos, Map<String,T> registry, Class<T> type, String defClassName)
public <T> List<T> initPlugins(List<PluginInfo> pluginInfos, Class<T> type, String defClassName)
defClassName
- The default classname if PluginInfo#className == nullpublic <T> T initPlugins(Map<String,T> registry, Class<T> type)
registry
- The map to which the instance should be added to. The key is the name attributetype
- The type of the Plugin. These should be standard ones registered by type.getName() in SolrConfigpublic ValueSourceParser getValueSourceParser(String parserName)
protected RestManager initRestManager() throws SolrException
SolrException
public CoreDescriptor getCoreDescriptor()
public IndexDeletionPolicyWrapper getDeletionPolicy()
public ReentrantLock getRuleExpiryLock()
public String getVersion()
SolrInfoMBean
getVersion
in interface SolrInfoMBean
public String getDescription()
SolrInfoMBean
getDescription
in interface SolrInfoMBean
public SolrInfoMBean.Category getCategory()
SolrInfoMBean
getCategory
in interface SolrInfoMBean
public String getSource()
SolrInfoMBean
getSource
in interface SolrInfoMBean
public URL[] getDocs()
SolrInfoMBean
Suggested documentation URLs: Homepage for sponsoring project, FAQ on class usage, Design doc for class, Wiki, bug reporting URL, etc...
getDocs
in interface SolrInfoMBean
public NamedList getStatistics()
SolrInfoMBean
Any Object type may be stored in the list, but only the
toString()
representation will be used.
getStatistics
in interface SolrInfoMBean
public Codec getCodec()
public void unloadOnClose(boolean deleteIndexDir, boolean deleteDataDir, boolean deleteInstanceDir)
public static void deleteUnloadedCore(CoreDescriptor cd, boolean deleteDataDir, boolean deleteInstanceDir)
Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.