This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to branch branch_10_0
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/branch_10_0 by this push:
new f7d49e9a7b0 Solr10 Major Changes page proposed edits (#4187)
f7d49e9a7b0 is described below
commit f7d49e9a7b0c8cbb0a4ade628bd1327d061f5a21
Author: Jan Høydahl <[email protected]>
AuthorDate: Thu Mar 5 23:03:31 2026 +0100
Solr10 Major Changes page proposed edits (#4187)
(cherry picked from commit 3e34d08c8043920f0c58354dc1ce34c3c1a9e256)
---
.../pages/major-changes-in-solr-10.adoc | 61 ++++++++++++----------
1 file changed, 33 insertions(+), 28 deletions(-)
diff --git
a/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
b/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
index 0a8f55f0361..86420c2815a 100644
---
a/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
+++
b/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
@@ -28,7 +28,7 @@ For example, if you are currently using Solr 9.1, you should
review changes made
Users planning their upgrade process should be aware of a change introduced in
Solr 9.10 which is especially relevant to Solr 10 and beyond.
By default, starting in 9.10 SolrCloud nodes will now fail to start if their
major.minor version (e.g. 9.10) is *lower* than the highest version found
elsewhere in the SolrCloud cluster.
The intention of this change is to allow Solr to support rolling _upgrades_
but not rolling _downgrades_ spanning a major version.
-This compatibility safeguard can be disabled via the environment variable
"SOLR_CLOUD_DOWNGRADE_ENABLED".
+This compatibility safeguard can be disabled via the environment variable
`SOLR_CLOUD_DOWNGRADE_ENABLED`.
== System Requirements
@@ -40,13 +40,13 @@ Solr 10.0 requires at least Java 21, while SolrJ 10.0
requires at least Java 17.
The previous `SOLR_JETTY_HOST` environment variable and `-Dsolr.jetty.host`
System Property are deprecated and will be removed in a future release. Please
update your configuration to use `SOLR_HOST_BIND` and `-Dsolr.host.bind`
instead.
-The previous `SOLR_HOST` and 'host' are deprecated and now use
`SOLR_HOST_ADVERTISE` and `solr.host.advertise`.
+The previous `SOLR_HOST` and `host` are deprecated and now use
`SOLR_HOST_ADVERTISE` and `solr.host.advertise`.
The previous `jetty.port` is deprecated and now use `solr.port.listen`.
=== Solr CLI and Scripts
-The Solr CLI has gone through some significant renovations to reduce technical
debt, and now functions more consistently and predictably. Most notably,
"long-options" now use double-dashes per Unix style conventions., e.g. `--help`
instead of `-help`.
+The Solr CLI has gone through some significant renovations to reduce technical
debt, and now functions more consistently and predictably. Most notably,
"long-options" now use double-dashes per Unix style conventions, e.g. `--help`
instead of `-help`.
Users are urged to review all use of the `bin/solr` command in their
automation, scripts, and documentation to ensure that the correct options are
being used.
Some key changes that users may encounter are:
@@ -55,10 +55,11 @@ Some key changes that users may encounter are:
* `-z`/`--zk-host` is now supported across all `bin/solr` tools as an
alternative to `-s`/`--solr-url`.
* `bin/solr` now allows users to specific basic auth credentials via the
`-u`/`--credentials` option, supplementing the previous
`SOLR_AUTHENTICATION_OPTS`-based support.
* Some short and single-letter options have been removed to avoid conflicts
or in favor to other options.
+ * `bin/solr start` now defaults to starting Solr in SolrCloud mode. Use the
`--user-managed` switch to start in standalone (user-managed) mode instead.
To learn about the updated options in each CLI tool, use the `--help` option
or look up the tool in the documentation.
-Additionally, the `bin/solr delete` command no longer deletes a configset when
you delete a collection. Previously if you deleted a collection, it would also
delete it's associated configset if it was the only user of it.
+Additionally, the `bin/solr delete` command no longer deletes a configset when
you delete a collection. Previously if you deleted a collection, it would also
delete its associated configset if it was the only user of it.
Now you have to explicitly provide a `--delete-config` option to delete the
configsets. This decouples the lifecycle of a configset from that of a
collection.
Several scripts formerly provided with Solr have been removed, including
`bin/post`, `bin/postlogs`, and `zkcli.sh`.
@@ -72,7 +73,7 @@ Users should instead rely on `bin/solr post` and `bin/solr
zk` as appropriate.
The following classes were renamed with some refactorings: `Http2SolrClient`
to `HttpJettySolrClient`, `ConcurrentUpdateHttp2SolrClient` to
`ConcurrentUpdateJettySolrClient`, `LBHttp2SolrClient` to `LBJettySolrClient`.
`CloudHttp2SolrClient.Builder` has moved to `CloudSolrClient`; users should
generally have no need to refer to `CloudHttp2SolrClient` or any class/member
with "http2" in it.
The builder will check if Jetty `HttpClient` is available and use that,
otherwise fallback on a JDK based `HttpClient`.
-`CloudJettySolrClient` is new, proving an explicit option.
+`CloudJettySolrClient` is new, providing an explicit option.
The system property `solr.solrj.http.jetty.customizer` (formerly
`solr.httpclient.builder.factory`) can configure a `HttpJettySolrClient`.
The only built-in implementation is
`org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientCustomizer`,
renamed from `PreemptiveBasicAuthClientCustomizer`.
@@ -88,8 +89,10 @@ This makes it clear that they pertain specifically to
“JavaBin” rather than
* The deprecated SolrClient implementations based on Apache HttpClient are
removed from SolrJ, thus the related dependencies are no longer present.
-* A number of classes moved to different packages to be better organized,
including:
-ShardTerms, DelegatingClusterStateProvider, JavaBinRequestWriter,
RoutedAliasTypes, SolrQuery, XMLRequestWriter, JacksonContentWriter,
FastStreamingDocsCallback, InputStreamResponse, InputStreamResponseParser,
JavaBinResponseParser, ResponseParser, StreamingJavaBinResponseParser,
StreamingResponseCallback, XMLResponseParser, JacksonDataBindResponseParser,
JsonMapResponseParser, SocketProxy
+* The `SolrQuery` class has moved from
`org.apache.solr.client.solrj.SolrQuery` to
`org.apache.solr.client.solrj.request.SolrQuery`. Update your imports
accordingly.
+
+* A number of other classes moved to different packages to be better
organized, including:
+ShardTerms, DelegatingClusterStateProvider, JavaBinRequestWriter,
RoutedAliasTypes, XMLRequestWriter, JacksonContentWriter,
FastStreamingDocsCallback, InputStreamResponse, InputStreamResponseParser,
JavaBinResponseParser, ResponseParser, StreamingJavaBinResponseParser,
StreamingResponseCallback, XMLResponseParser, JacksonDataBindResponseParser,
JsonMapResponseParser, SocketProxy
=== SolrCloud Overseer
@@ -109,7 +112,7 @@ If you are using any
xref:configuration-guide:cluster-singleton-plugins.adoc[clu
In general, most users won't notice a difference.
Commands should execute faster without the Overseer.
-Debugging some SolrCloud problems with the Overseer is more challenging than
without since the Overseer is complex (a principal reason for it's disablement).
+Debugging some SolrCloud problems with the Overseer is more challenging than
without, since the Overseer is complex (a principal reason for its disablement).
But the Overseer centralized some processing that results in efficiencies for
large clusters in some scenarios.
If you have a collection that has many replicas (hundreds), and many are
co-located on the same node, then node stops and starts will internally
interact with ZooKeeper more.
Using
xref:configuration-guide:configuring-solr-xml.adoc[minStateByteLenForCompression]
will help.
@@ -128,14 +131,24 @@ If only one node is exposed to a client, and if the
client uses the bin/solr exp
=== Modern NLP Models from Apache OpenNLP with Solr
-Solr now lets you access models encoded in ONNX format, commonly sourced from
HuggingFace.
-The DocumentCategorizerUpdateProcessorFactorythat lets you perform sentiment
and other classification tasks on fields.
+Solr now lets you access models encoded in ONNX format, commonly sourced from
Hugging Face.
+The `DocumentCategorizerUpdateProcessorFactory` lets you perform sentiment and
other classification tasks on fields.
It is available as part of the `analysis-extras` module.
+=== New Experimental Admin UI
+
+A new experimental Admin UI is available alongside the existing Admin UI
(SOLR-14414).
+It can be accessed at the URL path `/solr/ui/`.
+This UI is still in active development and provided as a preview; the existing
Admin UI remains the default.
+
=== Vector Search Enhancements
* The `efSearchScaleFactor` parameter is now available for the KNN query
parser (SOLR-17928). This parameter controls how many candidate vectors are
explored during HNSW graph traversal, allowing users to independently tune
search accuracy versus the number of results returned. Previously, improving
accuracy required increasing `topK` (which returns more results), but
`efSearchScaleFactor` enables exploring more candidates while still receiving
exactly `topK` results. The `efSearch` valu [...]
+* Scalar and binary quantized dense vectors are now supported for
`DenseVectorField` (SOLR-17780, SOLR-17812). Quantization reduces memory
consumption and can improve search performance at some cost to accuracy. See
the reference guide for configuration details.
+
+* GPU-accelerated approximate nearest neighbor search is now available via the
cuVS-Lucene pluggable codec (SOLR-17892). This allows NVIDIA GPU hardware to be
used for vector search workloads.
+
=== Deprecation Code Removals
* Several deprecated modules have been removed.
@@ -143,21 +156,19 @@ It is available as part of the `analysis-extras` module.
** `analytics` has been removed
** `hadoop-auth` (including the `solr.KerberosPlugin` class) has been removed
-* `OpenTracing` libraries were removed and replaced with `OpenTelemetry`
libraries. Any Java agents providing `OpenTracing` tracers will no longer work.
Telemetry tags `http.status_code` and `http.method` have been deprecated, newer
version of the tags have been added to the span data:
`http.response.status_code`, `http.request.method`.
+* `OpenTracing` libraries were removed and replaced with `OpenTelemetry`
libraries. Any Java agents providing `OpenTracing` tracers will no longer work.
Telemetry tags `http.status_code` and `http.method` have been deprecated, newer
versions of the tags have been added to the span data:
`http.response.status_code`, `http.request.method`.
* The sysProp `-Dsolr.redaction.system.pattern`, which allows users to provide
a pattern to match sysProps that should be redacted for sensitive information,
has been removed. Please use `-Dsolr.hiddenSysProps` or the envVar
`SOLR_HIDDEN_SYS_PROPS` instead.
* The `<hiddenSysProps>` solr.xml element under `<metrics>` has been removed.
Instead use the `<hiddenSysProps>` tag under `<solr>`, which accepts a
comma-separated string.
-Please see `-Dsolr.redaction.system.pattern`, which allows users to provide a
pattern to match sysProps that should be redacted for sensitive information,
-has been removed. Please use `-Dsolr.hiddenSysProps` or the envVar
`SOLR_HIDDEN_SYS_PROPS` instead.
* The node configuration file `/solr.xml` can no longer be loaded from
Zookeeper. Solr startup will fail if it is present.
* The legacy Circuit Breaker named `CircuitBreakerManager` is removed. Please
use individual Circuit Breaker plugins instead.
-* BlobRepository and BlobHandler have both been removed in favour of the
`FileStore` API implementation (per node stored file).
-To share resource intensive objects across multiple cores in components you
should now use the `CoreContainer.getObjectCache` approach
+* `BlobRepository`, `BlobHandler`, and the `.system` collection have all been
removed in favour of the `FileStore` API implementation (SOLR-17851).
+To share resource-intensive objects across multiple cores in components you
should now use the `CoreContainer.getObjectCache` approach.
* The language specific Response Writers, which were deprecated in 9.8 in
favour of more widely used formats like JSON have been removed.
The removed writer types (invoked as part of the `wt` parameter) include
`python`, `ruby`, `php`, and `phps`.
@@ -168,7 +179,7 @@ The removed writer types (invoked as part of the `wt`
parameter) include `python
* Support for the `<lib/>` directive, which historically could be used in
solrconfig.xml to add JARs on a core-by-core basis, was deprecated in 9.8 and
has now been removed.
Users that need to vary JAR accessibility on a per-core basis can use Solr's
xref:configuration-guide:package-manager.adoc[Package Manager].
-Users who that don't need to vary JAR access on a per-core basis have several
options, including the
xref:configuration-guide:configuring-solr-xml.adoc[`<sharedLib/>` tag supported
by solr.xml] or manipulation of Solr's classpath prior to JVM startup.
+Users who don't need to vary JAR access on a per-core basis have several
options, including the
xref:configuration-guide:configuring-solr-xml.adoc[`<sharedLib/>` tag supported
by solr.xml] or manipulation of Solr's classpath prior to JVM startup.
* Storing indexes and snapshots in HDFS has been removed. This results in
changes to solrconfig.xml and related configuration files and removal of the
`hdfs` module.
@@ -187,17 +198,13 @@ Nowadays, the HTTP request is available via internal
APIs: `SolrQueryRequest.get
* The TieredMergePolicy's segmentsPerTier default changed to `8` but `10` may
be configured to retain prior behaviour. (SOLR-17917).
-* BlobHandler and the `.system` collection have been removed in favour of
FileStore API. (SOLR-17851).
-
* The deprecated transient Solr cores capability has been removed.
(SOLR-17932)
-* TikaLanguageIdentifierUpdateProcessor, which was deprecated in 9.10, has
been removed. Users should use LangDetectLanguageIdentifierUpdateProcessor or
OpenNLPLangDetectUpdateProcessor instead for language detection. (SOLR-17960)
+* `TikaLanguageIdentifierUpdateProcessor`, which was deprecated in 9.10, has
been removed. Users should use `LangDetectLanguageIdentifierUpdateProcessor` or
`OpenNLPLangDetectUpdateProcessor` instead for language detection. (SOLR-17960)
-* LocalTikaExtractionBackend, which was deprecated in 9.10, has been removed.
The 'tikaserver' extraction backend is now the only supported backend for the
ExtractingRequestHandler, and the default. Users must configure a Tika Server
URL via the `tikaserver.url` parameter. (SOLR-17961)
+* `LocalTikaExtractionBackend`, which was deprecated in 9.10, has been
removed. The `tikaserver` extraction backend is now the only supported backend
for the ExtractingRequestHandler, and the default. Users must configure a Tika
Server URL via the `tikaserver.url` parameter. (SOLR-17961). Also, the ability
to configure Tika parse context with `parseContext.config` is no longer
supported. Tika parser-specific properties must now be configured directly on
the Tika Server itself, rather tha [...]
-+NOTE: The previous parse-context-based configuration (`parseContext.config`)
is no longer supported. Tika parser-specific properties must now be configured
directly on the Tika Server itself, rather than through Solr configuration.
Please refer to the Tika Server documentation for details on how to set these
properties.
-
-* The Prometheus exporter, JMX, SLF4J and Graphite metric reporters have been
removed. Users should migrate to using OTLP or the `/admin/metrics` endpoint
with external tools to get metrics to their preferred backend such as the
link:https://opentelemetry.io/docs/collector/[OTEL Collector].
+* The Prometheus exporter, JMX, SLF4J and Graphite metric reporters have been
removed. Prometheus metrics (node-scoped) are now available natively via the
`/admin/metrics` endpoint on each solr node (see <<OpenTelemetry>> section
below). Users can also push metrics via OTLP to any OTLP-supported backend such
as the link:https://opentelemetry.io/docs/collector/[OTEL Collector].
* The deprecated `JaspellLookupFactory` suggester implementation has been
removed. The default suggester lookup implementation is now `FSTLookupFactory`,
which provides better memory efficiency.
@@ -207,13 +214,13 @@ Nowadays, the HTTP request is available via internal
APIs: `SolrQueryRequest.get
* The deprecated `LowerCaseTokenizer` and `LowerCaseTokenizerFactory` have
been removed. These classes were deprecated in Solr 8 and can be replaced by
combining `LetterTokenizerFactory` with `LowerCaseFilterFactory`.
-* The deprecated 'solrcore.properties` configuration method has been removed.
The ability to configure a core via a custom properties file using the
`core.proprties` "property" setting remains.
+* The deprecated `solrcore.properties` configuration method has been removed.
The ability to configure a core via a custom properties file using the
`core.properties` "property" setting remains.
=== Security
* There is no longer a distinction between trusted and untrusted configSets;
all configSets are now considered trusted. To ensure security, Solr should be
properly protected using authentication and authorization mechanisms, allowing
only authorized users with administrative privileges to publish them.
-* `stream.file`, `stream.url`, and `stream.body` params are no longer
supported..
+* `stream.file`, `stream.url`, and `stream.body` params are no longer
supported.
=== Upgrade to Jetty 12.x and Jakarta namespace
@@ -240,7 +247,7 @@ The OS version of the official Docker image and provided
Dockerfile has been upg
=== Miscellaneous
-Solr logs no longer include webapp=/solr and there's no longer a "webapp"
key-value pair in the internal context.
+Solr logs no longer include `webapp=/solr` and there's no longer a `webapp`
key-value pair in the internal context.
=== Analysis and Tokenizers
@@ -248,8 +255,6 @@ Solr logs no longer include webapp=/solr and there's no
longer a "webapp" key-va
Due to Lucene 10 changes (https://github.com/apache/lucene/pull/12875),
`PathHierarchyTokenizer` now produces sequential tokens (position increment =
1) instead of overlapping tokens (position increment = 0). This affects
ancestor queries that relied on overlapping token matching. Users should test
existing queries and update configurations if needed.
-* In Lucene 10, the `OrdinalIterator` class has been moved from the main
`lucene-facet` module to the `lucene-sandbox` module. This requires Solr core
to now include a dependency on `lucene-sandbox` to support faceting operations
that use this class.
-
*Example configuration change:*
[source,xml]
----