<!doctype html>
<html>
  <head>
<!--
  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.
-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="minimal-ui, initial-scale=1, maximum-scale=1, user-scalable=0">

<link href='//fonts.googleapis.com/css?family=Raleway:400,300,600,500' rel='stylesheet' type='text/css'>
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" href="/theme/css/lib/foundation/normalize.css?v=4dd59757" />
<link rel="stylesheet" href="/theme/css/lib/foundation/foundation.min.css?v=4dd59757"/>
<link rel="stylesheet" href="/theme/css/lib/foundation/foundation-icons.css?v=4dd59757"/>
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/jquery.slick/1.3.7/slick.css"/>
<link rel="stylesheet" href="/theme/css/base.css?v=4dd59757" />
<meta name="Distribution" content="Global"/>
<meta name="Robots" content="index,follow"/>

<script src="/theme/javascript/lib/jquery-2.1.1.min.js"></script>
<script src="/theme/javascript/lib/foundation/modernizr.js?v=4dd59757"></script>
<script src="/theme/javascript/lib/angularjs/angular.min.js?v=4dd59757"></script>
<script src="/theme/javascript/lib/angularjs/angular-animate.min.js?v=4dd59757"></script>
<script src="/theme/javascript/lib/foundation/foundation.min.js?v=4dd59757"></script>
<script src="//cdn.jsdelivr.net/jquery.slick/1.3.7/slick.min.js"/></script>
<script src="/theme/javascript/lib/jquery.smooth-scroll.min.js?v=4dd59757"></script>
<script src="/theme/javascript/main.js?v=4dd59757"></script>
<script src="https://www.apachecon.com/event-images/snippet.js"></script>    <title>Solr Downloads - Apache Solr</title>

    <meta name="keywords"
          content="apache, apache lucene, apache solr, solr, lucene,
                   search, information retrieval, spell checking, faceting, inverted index, open source"/>
     <meta property="og:type" content="website" />
     <meta property="og:url" content="https://solr.apache.org/downloads.html"/>
     <meta property="og:title" content="Solr Downloads"/>
     <meta property="og:description" content="Official releases are usually created when the developers feel there are sufficient changes, improvements and bug fixes to warrant a..."/>
     <meta property="og:image" content="https://solr.apache.org/theme/images/solr_og_image.png?v=4dd59757"/>
     <meta property="og:image:secure_url" content="https://solr.apache.org/theme/solr/solr_og_image.png?v=4dd59757"/>

   <link rel="icon" href="/theme/images/favicon.ico" type="image/x-icon">
   <link rel="shortcut icon" href="/theme/images/favicon.ico" type="image/x-icon">
  </head>

  <body class="page "  x-ng-app="page" x-ng-controller="page.controllers.main">
<div class="contain-to-grid">
  <div class="header-section">
    <nav class="top-bar" data-topbar role="navigation">
      <ul class="title-area">
        <li class="name">
          <a href="/"><img class="logo" src="/theme/images/logo.svg" /></a>
        </li>
        <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li>
      </ul>

      <div class="top-bar-section">
        <ul class="navigation right">
          <li>
            <a href="/blog.html">Blog</a>
          </li>
          <li>
            <a href="/news.html">News</a>
          </li>
          <li>
            <a href="/security.html">Security</a>
          </li>
          <li>
            <a href="/features.html">Features</a>
          </li>
          <li>
            <a href="/resources.html">Resources</a>
          </li>
          <li>
            <a href="/community.html">Community</a>
          </li>
          <li>
            <a href="/whoweare.html">Project</a>
          </li>
          <li>
            <a href="/operator/">Solr Operator</a>
          </li>
<!-- TODO Search not working as of feb 2021, disabling
          <li class="toggle">
            <a ng-hide="toggled" ng-click="toggle();" href="#">Search</a>
            <div id="search">
<form id="quick-search" method="GET" action="https://sematext.com/opensee/solr" name="searchform">
  <fieldset>
    <div ng-show="toggled" class="search-box ng-hide">
      <input type="search" name="q" placeholder="Search..." accesskey="q"/>
      <a class="search-button" type="submit" onclick="this.closest('form').submit();return false;"><img src="/theme/images/magnifying-glass.png"/></a>
    </div>
  </fieldset>
</form>            </div>
          </li>
-->
          <li>
            <a class="btn" href="/downloads.html">Download</a>
          </li>
        </ul>
      </div>
    </nav>
  </div>
</div>

<div class="header-fill"></div>
<div class="container">
  <div class="row">
<div class="small-12 columns">
  <style type="text/css">
    .headerlink, .elementid-permalink {
      visibility: hidden;
    }
    h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink {
      visibility: visible
    }
  </style>

  <h1 id="solr-downloads">Solr Downloads
    <a class="headerlink" href="#solr-downloads" title="Permanent link">¶</a>
  </h1>
  <p>Official releases are usually created when the <a href="/whoweare.html">developers</a>
feel there are sufficient changes, improvements and bug fixes to warrant a release.
Due to the voluntary nature of Solr, no releases are scheduled in advance.</p>
  <h2 id="solr-961">Solr 9.6.1
    <a class="headerlink" href="#solr-961" title="Permanent link">¶</a>
  </h2>

  <p>Solr 9.6.1 is the most recent Apache Solr release.</p>

  <ul>
    <li>Source release:
      <a href="https://www.apache.org/dyn/closer.lua/solr/solr/9.6.1/solr-9.6.1-src.tgz?action=download">solr-9.6.1-src.tgz</a>
      [<a href="https://downloads.apache.org/solr/solr/9.6.1/solr-9.6.1-src.tgz.asc">PGP</a>]
      [<a href="https://downloads.apache.org/solr/solr/9.6.1/solr-9.6.1-src.tgz.sha512">SHA512</a>]
    </li>

    <li>Binary releases:
      <a href="https://www.apache.org/dyn/closer.lua/solr/solr/9.6.1/solr-9.6.1.tgz?action=download">solr-9.6.1.tgz</a>
      [<a href="https://downloads.apache.org/solr/solr/9.6.1/solr-9.6.1.tgz.asc">PGP</a>]
      [<a href="https://downloads.apache.org/solr/solr/9.6.1/solr-9.6.1.tgz.sha512">SHA512</a>]
      ,
      <a href="https://www.apache.org/dyn/closer.lua/solr/solr/9.6.1/solr-9.6.1-slim.tgz?action=download">solr-9.6.1-slim.tgz</a>
      [<a href="https://downloads.apache.org/solr/solr/9.6.1/solr-9.6.1-slim.tgz.asc">PGP</a>]
      [<a href="https://downloads.apache.org/solr/solr/9.6.1/solr-9.6.1-slim.tgz.sha512">SHA512</a>]
    </li>

    <li>Docker: <a href="https://hub.docker.com/_/solr">solr:9.6.1</a>, <a href="https://hub.docker.com/_/solr">solr:9.6.1-slim</a></li>

    <li><a href="/9_6_1/changes/Changes.html">Change log</a></li>
  </ul>

  <h3 id="solr-8113">Solr 8.11.3
    <a class="headerlink" href="#solr-8113" title="Permanent link">¶</a>
  </h3>

  <p>Solr 8.11.3 is the latest release in the 8.x series.</p>

  <ul>
    <li>Source release:
      <a href="https://www.apache.org/dyn/closer.lua/lucene/solr/8.11.3/solr-8.11.3-src.tgz?action=download">solr-8.11.3-src.tgz</a>
      [<a href="https://downloads.apache.org/lucene/solr/8.11.3/solr-8.11.3-src.tgz.asc">PGP</a>]
      [<a href="https://downloads.apache.org/lucene/solr/8.11.3/solr-8.11.3-src.tgz.sha512">SHA512</a>]
    </li>

    <li>Binary releases:
      <a href="https://www.apache.org/dyn/closer.lua/lucene/solr/8.11.3/solr-8.11.3.tgz?action=download">solr-8.11.3.tgz</a>
      [<a href="https://downloads.apache.org/lucene/solr/8.11.3/solr-8.11.3.tgz.asc">PGP</a>]
      [<a href="https://downloads.apache.org/lucene/solr/8.11.3/solr-8.11.3.tgz.sha512">SHA512</a>]
      /
      <a href="https://www.apache.org/dyn/closer.lua/lucene/solr/8.11.3/solr-8.11.3.zip?action=download">solr-8.11.3.zip</a>
      [<a href="https://downloads.apache.org/lucene/solr/8.11.3/solr-8.11.3.zip.asc">PGP</a>]
      [<a href="https://downloads.apache.org/lucene/solr/8.11.3/solr-8.11.3.zip.sha512">SHA512</a>]
    </li>

    <li>Docker: <a href="https://hub.docker.com/_/solr">solr:8.11.3</a></li>

    <li><a href="/8_11_3/changes/Changes.html">Change log</a></li>
  </ul>

  <h2 id="solr-reference-guide" class="offset">Solr Reference Guide
    <a class="headerlink" href="#solr-reference-guide" title="Permanent link">¶</a>
  </h2>

  <p>The <a href="/guide/">Solr Reference Guide</a> is Solr's official documentation.</p>

  <h2 id="past-versions">Past versions
    <a class="headerlink" href="#past-versions" title="Permanent link">&para;</a>
  </h2>

  <p>Archives for all past versions of Solr are available at <a href="https://archive.apache.org/dist/solr/">the Apache archives</a>. See the <a href="https://archive.apache.org/dist/lucene/solr/">Lucene archives for pre-9.0 releases</a></p>

  <h2 id="about-downloads">About downloads
    <a class="headerlink" href="#about-downloads" title="Permanent link">&para;</a>
  </h2>

  <h3 id="verify-downloads">Verify downloads
    <a class="headerlink" href="#verify-downloads" title="Permanent link">&para;</a>
  </h3>

  <p>The above release files should be verified using the PGP signatures and the <a href="https://downloads.apache.org/solr/KEYS">project release KEYS</a>.
  See <a href="https://www.apache.org/dyn/closer.cgi#verify">verification instructions</a> for a description of using the PGP and KEYS files for verification.
  SHA checksums are also provided as alternative verification method.</p>

  <h3 id="file-names">File names
    <a class="headerlink" href="#file-names" title="Permanent link">&para;</a>
  </h3>

  <p>The <code>solr-VERSION.zip</code> or <code>solr-VERSION.tgz</code> files (where <code>VERSION</code> is the version number of
  the release, e.g. <code>9.6.1</code>) contain Apache Solr, html documentation and a tutorial.</p>

  <p>The <code>solr-VERSION-src.tgz</code> file contains the full source code for that version.</p>

  <h3 id="about-versions-and-support">About versions and support
    <a class="headerlink" href="#about-versions-and-support" title="Permanent link">&para;</a>
  </h3>

  <p>Apache Solr is under active development with frequent feature releases on the current major version.
  The <strong>previous</strong> major version will see occasional critical security- or bug fixes releases.
  Older versions are considered EOL (End Of Life) and will not be further
  updated. For this reason it may also be difficult to obtain community support for EOL versions.</p>

  <p>Large changes or changes that break compatibility with existing functionality are normally only included in the
  <strong>next</strong> major version.</p>

  <table>
    <tr align=left>
      <th>Version</th>
      <th>Description</th>
    </tr>
    <tr align=left>
      <td>9.x</td>
      <td>Current major version for feature releases (STABLE)</td>
    </tr>
    <tr align=left>
      <td>8.11.x</td>
      <td>Previous major version may sometimes receive critical bugfix releases</td>
    </tr>
    <tr align=left>
      <td>10</td>
      <td>Next major version, yet to be released (UNSTABLE)</td>
    </tr>
    <tr align=left>
      <td>&lt;8.11</td>
      <td>All older versions are End Of Life (EOL)</td>
    </tr>
  </table>

  <p>For more about versions and upgrading Solr, see the
    <a href="/guide/solr/latest/upgrade-notes/solr-upgrade-notes.html">Reference Guide chapter “Upgrade Notes”</a>
    and <a href="/guide/solr/latest/deployment-guide/system-requirements.html">"System Requirements"</a>.
  </p>
</div>
  </div>
</div>
    <footer>
<div class="row">
  <div class="small-6 medium-3 columns">
    <h4>Features</h4>
    <ul>
      <li><a href="/features.html">Overview</a></li>
      <li><a href="/features.html#data-handling">Data Handling</a></li>
      <li><a href="/features.html#query">Querying</a></li>
      <li><a href="/features.html#facets">Faceting</a></li>
      <li><a href="/features.html#discovery">Discovery</a></li>
      <li><a href="/features.html#plugins">Plugins and Extensions</a></li>
      <li><a href="/features.html#stats">Statistics and Aggregations</a></li>
      <li><a href="/features.html#spatial">Spatial</a></li>
      <li><a href="/features.html#rich-content">Rich Content</a></li>
      <li><a href="/features.html#performance">Performance</a></li>
      <li><a href="/features.html#solrcloud">Scaling with SolrCloud</a></li>
      <li><a href="/features.html#admin-ui">User Interface</a></li>
    </ul>
  </div>
  <div class="small-6 medium-3 columns">
    <h4>Resources</h4>
    <ul>
      <li><a href="/resources.html#tutorials">Tutorial</a></li>
      <li><a href="/resources.html#documentation">Docs</a></li>
      <li><a href="/resources.html#solr-books">Books</a></li>
      <li><a href="/resources.html#presentations">Presentations</a></li>
      <li><a href="/resources.html#videos">Videos</a></li>
      <li><a href="/logos-and-assets.html">Solr Logos and Assets</a></li>
      <li><a href="/editing-website.html">Editing this Website</a></li>
      <br/>
      <li><a href="https://www.apache.org/">Apache Software Foundation</a></li>
      <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
      <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
      <li><a href="https://www.apache.org/security/">Security</a></li>
      <li><a href="https://www.apache.org/licenses/">License</a></li>
    </ul>
  </div>
  <div class="small-6 medium-3 columns">
    <h4>Get Started</h4>
    <ul>
      <li><a href="/downloads.html">Download</a></li>
      <li><a href="/guide/solr-tutorial.html">Run Through the Tutorial</a></li>
      <li><a href="/resources.html">Level Up</a></li>
    </ul>
    <br/>
    <h4>Community</h4>
    <ul>
      <li><a href="/community.html#support">Support</a></li>
      <li><a href="/community.html#mailing-lists-irc">Mailing Lists</a></li>
      <li><a href="/community.html#issue-tracker">Issues (JIRA)</a></li>
      <li><a href="/community.html#how-to-contribute">Contribute</a></li>
      <li><a href="/community.html#version-control">Version control (GIT)</a></li>
    </ul>
  </div>
  <div class="small-6 medium-3 columns">
    <h4>Related Projects</h4>
    <ul>
      <li><a href="http://lucene.apache.org/">Apache Lucene</a></li>
      <li><a href="http://zookeeper.apache.org/">Apache Zookeeper</a></li>
      <li><a href="http://tika.apache.org/">Apache Tika</a></li>
      <li><a href="http://manifoldcf.apache.org/">Apache ManifoldCF</a></li>
      <li><a href="http://spark.apache.org/">Apache Spark</a></li>
      <li><a href="http://nutch.apache.org/">Apache Nutch</a></li>
      <li><a href="http://zeppelin.apache.org/">Apache Zeppelin</a></li>
      <li><a href="http://opennlp.apache.org/">Apache OpenNLP</a></li>
    </ul>
  </div>
</div>
<div class="row copyright">
<div class="large-centered columns">
  <p>Copyright © 2024 The Apache Software Foundation, Licensed under the
    <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>. <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a><br/>
    Apache and the Apache feather logo are trademarks of The Apache Software Foundation. Apache Lucene,
    Apache Solr and their respective logos are trademarks of the Apache Software Foundation.
    Please see the <a href="https://www.apache.org/foundation/marks/">Apache Trademark Policy</a> for more information.
    All non-Apache logos are the trademarks of their respective owners.</p>
</div></div>    </footer>

<script>
  $(document).foundation();
</script>
<script>
  $(document).ready(function(){
    $('.slider').slick({
      infinite: false,
      speed: 300,
      slidesToShow: 6,
      slidesToScroll: 6,
      responsive: [
        {
          breakpoint: 1024,
          settings: {
            slidesToShow: 4,
            slidesToScroll: 4,
            infinite: true
          }
        },
        {
          breakpoint: 600,
          settings: {
            slidesToShow: 3,
            slidesToScroll: 3
          }
        },
        {
          breakpoint: 480,
          settings: {
            slidesToShow: 2,
            slidesToScroll: 2
          }
        },
        {
          breakpoint: 320,
          settings: {
            slidesToShow: 1,
            slidesToScroll: 1
          }
        }
      ],
      prevArrow: '<i class="fa fa-angle-left fa-2x slider-prev"></i>',
      nextArrow: '<i class="fa fa-angle-right fa-2x slider-next"></i>'
    });
  });
</script>  </body>
</html>