Comparing Solr and Elasticsearch architectures

The Solr and Elasticsearch systems behave similarly at the storefront level. Behind that layer are key differences in architecture.

Solr search architecture

The Solr search server consists of a set of REST services, a Solr search runtime framework, and a set of HCL Commerce foundation services. These services access the HCL Commerce database.

The following diagram shows the Solr search server architecture:

Search interaction diagram

The V9.1 Ingest and Query services

The Elasticsearch query process is structured similarly to the Solr service. The main difference lies in the microservice architecture of the system, and in the exits to the Elasticsearch and ZooKeeper administrative functions. These do not use the monolithic Solr search server.

One of the primary advantages of the Version 9.1 Query service is the inclusion of natural language processing and tooling support. Solr does not have these features and they provide considerable extra power. For more information, see Natural Language Processing (NLP) in Version 9.1.

Comparing Solr and Elasticsearch deployment architecture

There are certain deployment architecture differences between the HCL Commerce search solution based on Solr and the HCL Commerce search solution based on Elastcsearch. Unlike Solr, the HCL Commerce search solution based on Elasticsearch contains common data environment. It has the following benefits:
  • Enables capacity sharing.
  • De-couples indexed data from the query service to allow you to scale each service independently.
  • Uses an Index cluster to allow dynamic scaling.
  • Shards the index and uses distributed search at query time.
In addition to the common data environment, certain new components such as the indexing pipeline, NLP, and the event bus have been added to the HCL Commerce search solution based on Elasticsearch.

The following table depicts the key differences between the Solr and Elasticsearch deployment architecture:

Important: In the following table, the letter x indicates the scale-up parameter where you can deploy more instances.
Service name Solr Elasticsearch
Store (Authoring environment) x1(Server) x1(Web or Server)
Transaction (Authoring environment) x1 x1
Search (Authoring environment) x1(Master) x1(Query)
Store (Live environment) x1 x1(Web or Server)
Transaction (Live environment) x1 x1
Search Live environment) x1(Repeater), x3 (Slave) x3(Query)
Ingest (shared) Not applicable x1 (NiFi)
Data (shared) Not applicable Elasticsearch cluster
Event bus (shared) Not applicable x1 (Redis)