Solr 9 Features and What's New

Account Resources

Apache Solr 9 is the release that put vector search inside Solr itself, and the release that quietly deleted several classes a working Solr 8 configuration still names. Those two facts are the whole story: it unlocked everything Opensolr does with AI, and it is the reason a config file that booted for years can refuse to boot after one upgrade. Here is what Solr 9 added, what it deleted, what it only moved, and which Solr versions you can actually pick on Opensolr today.

SOLR 9 AT A GLANCEADDEDDenseVectorField and {!knn}Rate limiting, task managementNode roles, replica placementCertificate AuthenticationSQL querying in the Admin UIREMOVEDData Import Handler (DIH)VelocityResponseWriterLRUCache, FastLRUCache, LFUCacheCross Data Center ReplicationAutoscaling, maxShardsPerNodeMOVED, NOT REMOVEDextraction — SolrCell and Tikascripting — XSLT, script updatessql, ltr, langid, hdfsjwt-auth, hadoop-authContribs are now just modulesDEFAULTS THAT FLIPPEDhl.method is now unifiedblockUnknown is now trueSolr binds to localhostJava security manager is onmaster/slave is leader/follower

Solr 9 in one picture. The bottom-left quadrant is the one most upgrade guides get wrong: those components were relocated, not deleted.

01 · DENSE VECTORS: THE FEATURE EVERYTHING ELSE RESTS ON

Solr 9.0 introduced the DenseVectorField field type and the {!knn} query parser. Before that release Solr could only match documents by the words they contained. After it, Solr can also match documents by meaning, by comparing an embedding of the query against embeddings stored in the index.

This is not a footnote on the Solr 9 feature list. It is the single reason every AI capability on Opensolr exists: Hybrid Search, AI Hints, the AI Document Reader, retrieval-augmented answers, and search by image all read from a dense vector field. None of them can run on a Solr 8 index, because there is no field type there to hold the vectors.

ONE QUERY, TWO RANKINGS, ONE RESULT LISTVisitor queryone HTTP requestBM25 lexical scoringwords the document contains{!knn} vector scoringmeaning, via DenseVectorFieldOne ranked listOpensolr hybrid parser

The Opensolr {!hybrid} parser scores a query twice and fuses the two rankings. The right-hand half of that fusion is pure Solr 9.

DenseVectorField

A field type that stores a fixed-length float vector per document, indexed with the HNSW graph structure from Lucene 9. You declare the dimension and the similarity function once, in the schema.

The {!knn} query parser

Takes a query vector and returns the topK nearest documents by cosine, dot product or Euclidean distance. It composes with filter queries, so vector recall and business rules coexist.

What it powers on Opensolr

Hybrid Search, AI Hints, the AI Document Reader, RAG answers and search by image. All of them are dense vector lookups underneath a friendlier name.

What Solr 8 and older cannot do

Nothing about vectors was backported. On Solr 7 or 8 there is no vector field, no {!knn}, and therefore no semantic recall of any kind. This is the concrete reason to move.

This is the definition that ships on an Opensolr dense index, taken from a live Solr 9 core on our own fleet:

<fieldType name="knn_vector" class="solr.DenseVectorField"
           vectorDimension="1024" similarityFunction="cosine"/>

<field name="embeddings" type="knn_vector" indexed="true" stored="true"/>
On Opensolr you do not build that schema by hand. Ask for an index name ending in __dense and the dense vector schema, the embedding pipeline and the hybrid parser are wired up for you. Full detail in the Hybrid Search guide and on RAG in 60 seconds.

02 · EVERYTHING ELSE SOLR 9 ADDED

Java 11 is the floor, Java 17 the recommendation

Solr 9 requires Java 11 as a minimum and is continuously tested against Java 11, 17 and 21. The reference guide names JRE 17 as the recommended version. Our Solr 9 servers run OpenJDK 11.

Lucene 9 underneath

Solr 9 is the first release built and shipped independently of Lucene, on Lucene 9. That is where the HNSW vector index, the faster BKD point trees and the smaller segment format come from.

Certificate authentication

A new Certificate Authentication Plugin allows end-to-end x509 client certificates for both authentication and authorization, alongside improved PKI internode security and ZooKeeper 3.7 with TLS.

Rate limiting and task management

Update and search requests can be throttled on usage metrics, and long-running tasks can be declared cancellable and trackable. Both are node-level protections that did not exist in Solr 8.

Node roles and pluggable replica placement

SolrCloud gained explicit overseer and data roles, and a pluggable Replica Placement API that replaced the removed autoscaling framework.

SQL in the Admin UI

The Admin UI can run SQL queries directly. The SQL engine itself moved into the sql module, so existing configurations keep working once the module is enabled.

Six new language stemmers

Snowball stemmers for Hindi, Indonesian, Nepali, Serbian, Tamil and Yiddish, plus a new Norwegian normalisation filter.

SolrJ on HTTP/2

CloudSolrClient now speaks HTTP/2 with a new builder. The older HttpSolrClient and LBHttpSolrClient without HTTP/2 support are deprecated, and the previous CloudSolrClient was renamed CloudLegacySolrClient.

Leader and follower, everywhere

The master and slave vocabulary is gone from configuration, metrics and the Admin UI. If you monitor Solr KPIs by metric name, those names changed.

03 · WHAT WAS REMOVED, AND WHAT ONLY MOVED

Solr 9 reorganised the old contribs into modules: separate jars, in their own directories, switched on by name. A component that became a module is still shipped, still maintained, and still supported. It simply is not on the classpath until you say so. Confusing a move with a deletion is the most common error in Solr 9 upgrade write-ups, and it used to be an error on this page.

Correction. SolrCell, the Apache Tika integration behind ExtractingRequestHandler and /update/extract, was not removed in Solr 9. It became the extraction module. The Solr 9 reference guide still documents it in full, and the jar is right there in the distribution: modules/extraction/lib/solr-extraction-9.0.0.jar. Any guide that lists SolrCell under "removed in Solr 9" is wrong, this page included until this revision.
SOLRCELL AND APACHE TIKA: MOVED, NOT DELETEDSOLR 8contrib/extractionsolr-cell-8.x.jaron the classpath alreadySOLR 9modules/extraction/lib/solr-extraction-9.0.0.jarSOLR_MODULES=extractiondeclare /update/extract yourselfSame ExtractingRequestHandler, same Tika parsers, new location on disk.

SolrCell in Solr 8 and in Solr 9. Only the path and the switch changed.

Enabling a module is one line in the Solr environment file. This is what our own Solr 9 servers carry:

# solr.in.sh
SOLR_MODULES=extraction,ltr

The module being on the classpath is only half of it. The /update/extract endpoint still has to be declared as a request handler in your solrconfig.xml, which you can edit yourself from the Configuration Files Editor in the Opensolr control panel. If you would rather not touch Tika at all, the Opensolr Web Crawler already extracts text from PDF, DOCX, ODT and XLSX for you and indexes the result.

ComponentStatus in Solr 9What to do
SolrCell / TikaShipped, as the extraction moduleEnable the module, declare /update/extract in solrconfig.xml
XSLTResponseWriterShipped, moved to the scripting moduleEnable the scripting module, or return JSON and transform client-side
Script update processorShipped, renamed ScriptUpdateProcessorFactory in scriptingRename the class and enable the module
JWT and Hadoop authShipped, as the jwt-auth and hadoop-auth modulesEnable the module. Short class names still resolve
SQL, LTR, langid, HDFSShipped, as modulesEnable by name. No configuration changes needed
Data Import HandlerRemoved from Solr, now a separate community projectPush documents with the update API, or use the crawler and the ingestion API
VelocityResponseWriterRemoved, including /browse and wt=velocityRender results in your own application, or use a hosted search page
LRUCache, FastLRUCache, LFUCacheRemoved from the jarDrop the class attribute. CaffeineCache is the only implementation left
Cross Data Center ReplicationRemovedIndex into each environment, or replicate at the infrastructure layer
Autoscaling frameworkRemovedUse Replica Placement Plugins
maxShardsPerNodeRemovedUse a placement strategy instead
SimpleFSDirectoryFactoryRemovedSwitch to NIOFSDirectoryFactory
LegacyBM25SimilarityFactoryRemovedUse BM25SimilarityFactory and retune if scores shift
clusterstate.jsonNo longer readMigrate the state format while still on Solr 8

04 · DEFAULTS THAT CHANGED UNDER YOUR CONFIGURATION

A Solr 9 upgrade rarely fails on a feature you use. It fails on a default you never set and never thought about. These are the ones that generate support tickets.

THE LINE THAT STOPS A SOLR 8 CONFIG FROM BOOTING<filterCache class="solr.FastLRUCache" size="512"/>ClassNotFoundException: solr.FastLRUCache — the core never comes up<filterCache size="512" initialSize="512" autowarmCount="0"/>Solr 9 ships exactly one cache implementation, so the class attribute is not needed at all.

The most common Solr 9 boot failure, and the one-word fix. Full walkthrough in the FastLRUCache error page.

SettingSolr 8Solr 9Why it matters
Cache classsolr.FastLRUCache and friendsCaffeineCache onlyNaming a removed class stops the core from loading at all
hl.methodoriginalunifiedHighlight output and the parameters that affect it both change. storeOffsetsWithPositions is enough, term vectors are an expensive way to get the same result
maxBooleanClauses1024, checked at the top levelEnforced recursivelyWide edismax queries with synonym expansion that passed on Solr 8 can now trip the limit. Our cores are configured at 6500
blockUnknownfalsetrueBasic auth and JWT now reject unauthenticated requests by default. Backwards incompatible on purpose
Network bindingAll interfaceslocalhostA fresh Solr 9 is not reachable from outside the machine until you say so. Embedded ZooKeeper is the same
Java security managerOffOnCustom plugins that touch the filesystem or the network may need a policy change
Atomic updates on child docsFell back on the route parameterRequires the root fieldPartial updates to nested documents fail silently differently than before
schemaVersion (from 9.7)1.61.7, docValues on by defaultMost types that support docValues get them, and fields become uninvertible=false. Moving to 1.7 generally means a full reindex
lib directives (from 9.8)Always honouredOpt-in, deprecatedA lib tag is now ignored with a warning unless explicitly enabled, and goes away entirely in Solr 10

The docValues trap on text fields

docValues="true" on a solr.TextField is invalid and the core will not start: that field type does not support doc values. If you need to sort or facet on the text, copy it into a string field, or switch the type to solr.SortableTextField. Solr 9.7 turning docValues on by default makes this much easier to hit by accident.

You cannot add docValues without reindexing

Solr 8 let you retrofit doc values with UninvertDocValuesMergePolicy. Lucene 9 closed that door. Adding docValues to an existing field now means a full reindex, every time.

Reindex after any major upgrade

The Solr project recommends a complete reindex after every major version step, not just when the schema changes. Read Solr Best Practices before you plan it, and JVM tuning before you size it.

05 · WHICH SOLR VERSIONS OPENSOLR RUNS TODAY

Straight answer, no marketing: the newest Solr you can select when you create an index on Opensolr is 9.6. The public server pool also runs 9.4 and 9.0, the whole Solr 8 line, and a set of legacy servers going back to 3.6. Apache has since released Solr 10.0 as the current major, with 9.10.1 closing the 9.x line. We do not offer Solr 10. If you need it, tell us and we will discuss it, but no page on this site should imply it is a dropdown option today.

SOLR VERSIONS YOU CAN PICK ON OPENSOLR TODAYApache current major: 10.0. Not offered here.END OF LIFE UPSTREAM · STILL ORDERABLE · HARDWARE BEING RETIRED3.64.04.105.16.17.0SUPPORTED · NO DENSE VECTORS, NO HYBRID SEARCH8.08.68.11CURRENT ON OPENSOLR · DENSE VECTORS, HYBRID SEARCH, AI FEATURES9.09.49.6

The real version pool behind the create-index dropdown, grouped by what each band can and cannot do.

Legacy versions being orderable is not the same claim as legacy versions being supported forever, and this page used to make the second one. Here is what is actually true.

Solr 3 through 7 are end of life upstream

Apache considers everything below 9.10 end of life. No security patches, no bug fixes, and community help is hard to find. Anything we do for those versions, we do alone.

Legacy servers can still be selected

They appear in the create-index dropdown and they run. That is the extent of the promise: an index on a legacy server keeps serving until its hardware is retired.

Old hardware is being retired, with notice

The machines running the oldest Solr versions are being decommissioned. If your index sits on one, you get an email naming the affected cores and a cutoff date. Nobody is cut off without warning, and the date is negotiable if you ask early.

There is no in-place upgrade

Lucene reads segments from one major version back and no further. A Solr 5, 6 or 7 index cannot be opened by Solr 9 at all. Upgrading always means a new core plus a full reindex from your source of truth.

Configuration moves. Data does not.

We convert schema.xml and solrconfig.xml for you. We never migrate documents, because the format makes it impossible. Reindexing is your side of the job, on every route.

Config migration is a paid service

Flat 85 EUR per index, one time, delivered in under four business hours. The old core keeps serving traffic in parallel the whole time.

06 · MOVING AN OLD INDEX ONTO SOLR 9

Three routes, described in full in the Solr migration guide. All three end with you reindexing, and all three run the old and the new index side by side until you are satisfied.

We convert the configuration

You send the index name and the target major version, we hand back a provisioned Solr 8 or 9 index with your schema and solrconfig converted, validated and loading. 85 EUR per index, under four business hours.

Brand new index, modern defaults

If your schema is close to stock, skip the conversion entirely. Create a fresh index on a Solr 9 server and accept the default schema, which already ships PointFields, leader and follower terminology, unified highlighting and, on a dense index, the vector field.

Convert it yourself

The migration guide carries the full schema.xml and solrconfig.xml conversion tables, field type by field type and handler by handler, plus a cursorMark dump script for the case where the old index is your only remaining copy of the data.

Start on Solr 9

Create an index on a Solr 9 server and you get dense vectors, hybrid search and the AI features that depend on them. Sitting on an older version? Send us the index name and we will price the move.

Create a free indexRead the migration guideTalk to us