Magento Commerce only

Install and configure Solr

Solr is deprecated in Magento 2.1 and will not be supported in 2.2. In a future release, Solr compatibility will be removed.

If possible, use Elastic Search as an alternative catalog search engine.

Magento Commerce version 2.x enables you to configure either of the following as a catalog search engine:

See one of the following sections for more information:

Intended audience and purpose of this topic

This topic is intended for Magento Commerce administrators and systems integrators who have some familiarity with search engines—ideally, who also have Solr configuration experience. No programming is required to perform the tasks discussed in this topic.

This topic discusses a simple Solr configuration that uses the example Solr configuration provided with Solr, default Solr integration options provided with Magento Commerce, and also explains how to configure Magento Commerce to use Solr. Advanced configuration tasks—such as setting up dictionaries—are beyond the scope of this topic.

The example Solr configuration is not intended to be used in a production site. It’s for testing and development only. Because it’s simple to use, it’s a great way for you to learn more about Solr.

More information about the Solr solution

Solr runs as a standalone full-text search server in a servlet container such as Jetty (which is used by the Solr example configuration) and Tomcat.

Solr uses the Lucene Java search library for full-text indexing and search. Your applications interact with Solr using HTTP POST (in JSON, XML, CSV, or binary formats) to index documents and using HTTP GET to retrieve search results back as JSON, XML, or a variety of other formats (Python, Ruby, PHP, CSV, binary, and so on). If you’re a programmer, try the Solr tutorial. Whether you’re a programmer or not, read the Solr FAQ.

No programming is required to implement Solr as discussed in this topic.

Solr’s powerful external configuration allows it to be tailored to almost any type of application without Java coding, and it has an extensive plug-in architecture when more advanced customization is required. Solr is highly scalable, providing distributed search and index replication.

Customize the Solr search engine at your own risk. Magento supports only the options displayed in the Admin. Customizing the Solr engine itself, while potentially useful, can cause issues with Magento. If you encounter problems with your customizations, do not contact Magento Support; instead, consult the resources available from the Apache Solr Wiki.

In this topic, you’ll use the example configuration provided with Solr and Magento’s provided Solr configuration to implement a simple, quick integration with Solr.

Some reasons to use Solr with Magento include:

  • Magento ships with a sample Solr configuration that enables you to provide users with a powerful search engine without your needing to customize any code.
  • You get better performance of search, catalog views, and layered navigation.
  • When the system is under load, Solr avoids frequent updates of the MySQL catalogsearch_fulltext table and alleviates issues with database table locks.

Assumptions for using Solr in a development environment

This topic discusses a simple way to set up Solr in a development environment. No coding is required.

The following suggestions in this topic should not be used in a production environment because they’re potentially unsafe:

  • Starting the example Solr web application using java -jar start.jar because it’s not maintainable. You should script starting and stopping Solr instead.
  • Using the example Solr web application is not recommended because you should customize a new web application for your use. You can also compare application servers to determine if the bundled Jetty application server is appropriate for your needs.
  • Turning off your UNIX firewall is not recommended in production. (As an alternative, you can set up firewall rules to allow Magento and Solr to communicate.)
  • Setting SELinux to permissive

    SELinux settings are entirely up to you. Magento does not recommend particular settings; however, be aware that setting up SELinux is very complex.

Prerequisites

The tasks discussed in this topic require the following:

Firewall and SELinux

By default, UNIX systems generally enable a firewall with restrictive rules and also enable SELinux, which imposes other types of security on the operating system. It’s easier to run Solr in development by disabling the firewall and SELinux but that choice is up to you.

If you choose to enable your firewall and SELinux, you must set up rules to allow TCP traffic between Magento and Solr on Solr’s listen port (8983 by default).

Disable iptables and SELinux

To stop the iptables (firewall) service, enter the following command as a user with root privileges:

service iptables stop

To set SELinux for permissive mode:

  1. To determine if SELinux is enabled, enter the following command:

    getenforce
    

    Enforcing displays to confirm that SELinux is running. (If Permissive displays, continue with the next section.)

  2. To change to permissive mode, enter:

    setenforce 0
    

Set up rules for iptables and SELinux

To set up rules to allow communication with the firewall or SELinux enabled, consult the following resources:

Install the Java Software Development Kit (JDK)

To determine if Java is already installed, enter the following command:

java -version

If the message java: command not found displays, you must install the Java SDK as discussed in the next section.

This topic discusses using Jetty, which comes with Solr. Consult another resource, such as the Solr Wiki, to use Tomcat with Solr.

To see if you’re currently running Jetty and to check the version, see How to find out the version of Jetty.

See one of the following sections:

Install the JDK on CentOS

See this article on digitalocean.

Be sure to install the JDK and not the JRE.

Install the Java 6 or later SDK on Ubuntu

To install the Java 6 SDK, enter the following command as a user with root privileges:

apt-get install openjdk-6-jdk

To install Java 7, enter the following command as a user with root privileges:

apt-get install openjdk-7-jdk

Java version 7 might not be available for all operating systems. For example, you can search the list of available packages for Ubuntu here.

To install JDK 1.8 on Ubuntu, see Oracle documentation.

Install Solr 4 and Jetty

The Apache Solr package installs both Solr and Jetty. If Jetty is already installed, see the Solr with Jetty Wiki for more information.

Tomcat is also a supported servlet container for Solr but discussing how to set up Tomcat with Solr is beyond the scope of this topic. For more information, see the Solr With Tomcat Wiki.

To install Solr and Jetty:

  1. As a user with root privileges, use wget or a similar command to download the latest version of Solr 4 to an empty directory such as /opt/solr.

    An example follows.

    mkdir -p <empty-directory<>  
    cd <directory>
    wget http://archive.apache.org/dist/lucene/solr/4.10.4/solr-4.10.4.tgz
    

    Messages similar to the following display to confirm a successful download.

    wget http://archive.apache.org/dist/lucene/solr/4.10.4/solr-4.10.4.tgz
    --2016-10-01 15:54:37--  http://archive.apache.org/dist/lucene/solr/4.10.4/solr-4.10.4.tgz
    Resolving archive.apache.org... 163.172.17.199
    Connecting to archive.apache.org|163.172.17.199|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 150059757 (143M) [application/x-gzip]
    Saving to: "solr-4.10.4.tgz"
    
    100%[==========================================================>] 150,059,757 8.99M/s   in 4.5s
    2016-10-01 15:55:23 (3.18 MB/s) - "solr-4.10.4.tgz" saved [150059757/150059757]
    
  2. Unpack the Solr installation; an example follows.

    tar -xvf solr-4.10.4.tgz
    

Next step

Configure Solr to work with Magento