= Implicit RequestHandlers
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

Solr ships with many out-of-the-box RequestHandlers, which are called implicit because they do not need to be  configured in `solrconfig.xml` before you are able to use them.

These handlers have pre-defined default parameters, known as _paramsets_, which can be modified if necessary.

== Available Implicit Endpoints

NOTE: All endpoint paths listed below should be placed after Solr's host and port (if a port is used) to construct a URL.

=== Admin Handlers

Many of these handlers are used throughout the Admin UI to show information about Solr.

[horizontal]
File:: Returns content of files in `${solr.home}/conf/`. This handler must have a collection name in the path to the endpoint.
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/admin/file` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/ShowFileRequestHandler.html[ShowFileRequestHandler] |`_ADMIN_FILE`
|===

Logging:: Retrieve and modify registered loggers.
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoints |Class & Javadocs |Paramset
|v1: `solr/admin/info/logging`

v2: `api/node/logging` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/ShowFileRequestHandler.html[LoggingHandler] |`_ADMIN_LOGGING`
|===

Luke:: Expose the internal lucene index. This handler must have a collection name in the path to the endpoint.
+
*Documentation*: http://wiki.apache.org/solr/LukeRequestHandler
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/admin/luke` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/LukeRequestHandler.html[LukeRequestHandler] |`_ADMIN_LUKE`
|===


MBeans:: Provide info about all registered {solr-javadocs}/solr-core/org/apache/solr/core/SolrInfoBean.html[SolrInfoMBeans]. This handler must have a collection name in the path to the endpoint.
+
*Documentation*: <<mbean-request-handler.adoc#mbean-request-handler,MBean Request Handler>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/admin/mbeans` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/SolrInfoMBeanHandler.html[SolrInfoMBeanHandler] |`_ADMIN_MBEANS`
|===

Ping:: Health check. This handler must have a collection name in the path to the endpoint.
+
*Documentation*: <<ping.adoc#ping,Ping>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/admin/ping` |{solr-javadocs}/solr-core/org/apache/solr/handler/PingRequestHandler.html[PingRequestHandler] |`_ADMIN_PING`
|===

Plugins:: Return info about all registered plugins. This handler must have a collection name in the path to the endpoint.
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/admin/plugins` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/PluginInfoHandler.html[PluginInfoHandler] | None.
|===

System Properties:: Return JRE system properties.
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoints |Class & Javadocs |Paramset
|v1: `solr/admin/info/properties`

v2: `api/node/properties` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/PropertiesRequestHandler.html[PropertiesRequestHandler] |`_ADMIN_PROPERTIES`
|===

Segments:: Return info on last commit generation Lucene index segments.
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/admin/segments` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/SegmentsInfoRequestHandler.html[SegmentsInfoRequestHandler] |`_ADMIN_SEGMENTS`
|===

System Settings:: Return server statistics and settings.
+
*Documentation*: https://wiki.apache.org/solr/SystemInformationRequestHandlers#SystemInfoHandler
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoints |Class & Javadocs |Paramset
|v1: `solr/admin/info/system`

v2: `api/node/system` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/SystemInfoHandler.html[SystemInfoHandler] |`_ADMIN_SYSTEM`
|===
+
This endpoint can also take the collection or core name in the path (`solr/<collection>/admin/system` or `solr/<core>/admin/system`) which will include all of the system-level information and additional information about the specific core that served the request.

Threads:: Return info on all JVM threads.
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoints |Class & Javadocs |Paramset
|v1: `solr/admin/info/threads`

v2: `api/node/threads` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/ThreadDumpHandler.html[ThreadDumpHandler] |`_ADMIN_THREADS`
|===

Health:: Reporting the health of the node (_available only in SolrCloud mode_)
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoints |Class & Javadocs |Paramset
|v1: `solr/admin/info/health`

v2: `api/node/health` |{solr-javadocs}/solr-core/org/apache/solr/handler/admin/HealthCheckHandler.html[HealthCheckHandler] |`_ADMIN_HEALTH`
|===

This endpoint can also take the collection or core name in the path (`solr/<collection>/admin/health` or `solr/<core>/admin/health`).

=== Analysis Handlers

[horizontal]
Document Analysis:: Return a breakdown of the analysis process of the given document.
+
*Documentation*: https://wiki.apache.org/solr/AnalysisRequestHandler
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/analysis/document` |{solr-javadocs}/solr-core/org/apache/solr/handler/DocumentAnalysisRequestHandler.html[DocumentAnalysisRequestHandler] |`_ANALYSIS_DOCUMENT`
|===

Field Analysis:: Return index- and query-time analysis over the given field(s)/field type(s). This handler drives the <<analysis-screen.adoc#analysis-screen,Analysis screen>> in Solr's Admin UI.
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/analysis/field` |{solr-javadocs}/solr-core/org/apache/solr/handler/FieldAnalysisRequestHandler.html[FieldAnalysisRequestHandler] |`_ANALYSIS_FIELD`
|===

=== Handlers for Configuration

[horizontal]
Config API:: Retrieve and modify Solr configuration.
+
*Documentation*: <<config-api.adoc#config-api,Config API>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|v1: `solr/<collection>/config`

v2: `api/collections/<collection>/config` |{solr-javadocs}/solr-core/org/apache/solr/handler/SolrConfigHandler.html[SolrConfigHandler] |`_CONFIG`
|===

Dump:: Echo the request contents back to the client.
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/debug/dump` |{solr-javadocs}/solr-core/org/apache/solr/handler/DumpRequestHandler.html[DumpRequestHandler] |`_DEBUG_DUMP`
|===

Replication:: Replicate indexes for SolrCloud recovery and Master/Slave index distribution. This handler must have a core name in the path to the endpoint.
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<core>/replication` |{solr-javadocs}/solr-core/org/apache/solr/handler/ReplicationHandler.html[ReplicationHandler] |`_REPLICATION`
|===

Schema API:: Retrieve and modify the Solr schema.
+
*Documentation*: <<schema-api.adoc#schema-api,Schema API>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|v1: `solr/<collection>/schema`, `solr/<core>/schema`

v2: `api/collections/<collection>/schema`, `api/cores/<core>/schema` |{solr-javadocs}/solr-core/org/apache/solr/handler/SchemaHandler.html[SchemaHandler] |`_SCHEMA`
|===

=== Query Handlers

[horizontal]
Export:: Export full sorted result sets.
+
*Documentation*: <<exporting-result-sets.adoc#exporting-result-sets,Exporting Result Sets>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/export` |{solr-javadocs}/solr-core/org/apache/solr/handler/ExportHandler.html[ExportHandler] |`_EXPORT`
|===

RealTimeGet:: Low-latency retrieval of the latest version of a document.
+
*Documentation*: <<realtime-get.adoc#realtime-get,RealTime Get>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/get` |{solr-javadocs}/solr-core/org/apache/solr/handler/RealTimeGetHandler.html[RealTimeGetHandler] |`_GET`
|===

Graph Traversal:: Return http://graphml.graphdrawing.org/[GraphML] formatted output from a `gatherNodes` streaming expression.
+
*Documentation*: <<graph-traversal.adoc#graph-traversal,Graph Traversal>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/graph` |{solr-javadocs}/solr-core/org/apache/solr/handler/GraphHandler.html[GraphHandler] |`_ADMIN_GRAPH`
|===

SQL:: Front end of the Parallel SQL interface.
+
*Documentation*: <<parallel-sql-interface.adoc#sql-request-handler,SQL Request Handler>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/sql` |{solr-javadocs}/solr-core/org/apache/solr/handler/SQLHandler.html[SQLHandler] |`_SQL`
|===

Streaming Expressions:: Distributed stream processing.
+
*Documentation*: <<streaming-expressions.adoc#streaming-requests-and-responses,Streaming Requests and Responses>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/stream` |{solr-javadocs}/solr-core/org/apache/solr/handler/StreamHandler.html[StreamHandler] |`_STREAM`
|===

Terms:: Return a field's indexed terms and the number of documents containing each term.
+
*Documentation*: <<the-terms-component.adoc#using-the-terms-component-in-a-request-handler,Using the Terms Component in a Request Handler>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/terms` |{solr-javadocs}/solr-core/org/apache/solr/handler/component/SearchHandler.html[SearchHandler] |`_TERMS`
|===

=== Update Handlers

[horizontal]
Update:: Add, delete and update indexed documents formatted as SolrXML, CSV, SolrJSON or javabin.
+
*Documentation*: <<uploading-data-with-index-handlers.adoc#uploading-data-with-index-handlers,Uploading Data with Index Handlers>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/update` |{solr-javadocs}/solr-core/org/apache/solr/handler/UpdateRequestHandler.html[UpdateRequestHandler] |`_UPDATE`
|===

CSV Updates:: Add and update CSV-formatted documents.
+
*Documentation*: <<uploading-data-with-index-handlers.adoc#csv-update-convenience-paths,CSV Update Convenience Paths>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/update/csv` |{solr-javadocs}/solr-core/org/apache/solr/handler/UpdateRequestHandler.html[UpdateRequestHandler] |`_UPDATE_CSV`
|===

JSON Updates:: Add, delete and update SolrJSON-formatted documents.
+
*Documentation*: <<uploading-data-with-index-handlers.adoc#json-update-convenience-paths,JSON Update Convenience Paths>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/update/json` |{solr-javadocs}/solr-core/org/apache/solr/handler/UpdateRequestHandler.html[UpdateRequestHandler] |`_UPDATE_JSON`
|===

Custom JSON Updates:: Add and update custom JSON-formatted documents.
+
*Documentation*: <<transforming-and-indexing-custom-json.adoc#transforming-and-indexing-custom-json,Transforming and Indexing Custom JSON>>
+
[cols="3*.",frame=none,grid=cols,options="header"]
|===
|API Endpoint |Class & Javadocs |Paramset
|`solr/<collection>/update/json/docs` |{solr-javadocs}/solr-core/org/apache/solr/handler/UpdateRequestHandler.html[UpdateRequestHandler] |`_UPDATE_JSON_DOCS`
|===

== How to View Implicit Handler Paramsets

You can see configuration for all request handlers, including the implicit request handlers, via the <<config-api.adoc#config-api,Config API>>.

To include the expanded paramset in the response, as well as the effective parameters from merging the paramset parameters with the built-in parameters, use the `expandParams` request parameter. For the `/export` request handler, you can make a request like this:


[.dynamic-tabs]
--
[example.tab-pane#v1expandparams]
====
[.tab-label]*V1 API*

[source,bash]
----
http://localhost:8983/solr/gettingstarted/config/requestHandler?componentName=/export&expandParams=true
----
====

[example.tab-pane#v2expandparams]
====
[.tab-label]*V2 API*

[source,bash]
----
http://localhost:8983/api/collections/gettingstarted/config/requestHandler?componentName=/export&expandParams=true
----
====
--

The response will look similar to:

[source,json]
----
{
  "config": {
    "requestHandler": {
      "/export": {
        "class": "solr.ExportHandler",
        "useParams": "_EXPORT",
        "components": ["query"],
        "defaults": {
          "wt": "json"
        },
        "invariants": {
          "rq": "{!xport}",
          "distrib": false
        },
        "name": "/export",
        "_useParamsExpanded_": {
          "_EXPORT": "[NOT AVAILABLE]"
        },
        "_effectiveParams_": {
          "distrib": "false",
          "omitHeader": "true",
          "wt": "json",
          "rq": "{!xport}"
        }
      }
    }
  }
}
----

== How to Edit Implicit Handler Paramsets

Because implicit request handlers are not present in `solrconfig.xml`, configuration of their associated `default`, `invariant` and `appends` parameters may be edited via the <<request-parameters-api.adoc#request-parameters-api, Request Parameters API>> using the paramset listed in the above table. However, other parameters, including SearchHandler components, may not be modified. The invariants and appends specified in the implicit configuration cannot be overridden.
