Using Elasticsearch to Power Advanced Product Sorting in WooCommerce

Table of Contents


Elasticsearch is a powerful search and analytics engine that can be used to enhance the sorting capabilities of your WooCommerce store. By integrating Elasticsearch with WooCommerce, you can provide advanced product sorting options that go beyond the default sorting options provided by WooCommerce.

In this post, we will explore how Elasticsearch can be leveraged to power advanced product sorting in WooCommerce. We will also provide examples of using the PHP client to interact with Elasticsearch and demonstrate how the WPSOLR plugin can further enhance the functionality.

Using the Elasticsearch PHP Client

To get started with Elasticsearch in PHP, you’ll need to install the Elasticsearch PHP client library. You can install it using Composer by running the following command:

composer require elasticsearch/elasticsearch

Once the client library is installed, you can establish a connection to your Elasticsearch cluster. Here’s an example of how to create a basic client instance:

require 'vendor/autoload.php';

$client = Elasticsearch\ClientBuilder::create()->build();

With the client instance ready, you can perform various operations on your Elasticsearch cluster, such as indexing documents, searching, and sorting.

Advanced Product Sorting with Elasticsearch

By default, WooCommerce provides basic sorting options like sorting by popularity, rating, and price. However, with Elasticsearch, you can introduce more advanced sorting capabilities based on various custom criteria.

Let’s say you want to implement sorting based on product relevance and availability. You can achieve this by indexing your WooCommerce products in Elasticsearch and assigning relevance and availability scores to each product.

Here’s an example of indexing a product in Elasticsearch:

$product = wc_get_product($product_id); 
$params = [ 'index' => 'woocommerce_products', 'id' => $product->get_id(),
 'body' => [
  'name' => $product->get_name(),
  'relevance_score' => $product->get_relevance_score(),
   'availability_score' => $product->get_availability_score(),

$response = $client->index($params);

In the above code snippet, we retrieve the relevant data for the product and index it in Elasticsearch, along with the relevance and availability scores.

To perform advanced sorting, you can use Elasticsearch’s sorting capabilities in combination with WooCommerce’s default product queries. Here’s an example of sorting products by relevance and availability:

$params = [ 'index' => 'woocommerce_products', 'body' => [
 'query' => [
  'match_all' => [],
 'sort' => [
   ['relevance_score' => 'desc'],
   ['availability_score' => 'desc'],

$response = $client->search($params);

In the above example, we perform a match_all query to retrieve all products and then sort them by relevance in descending order. If multiple products have the same relevance score, they are further sorted by availability score in descending order.

Enhancing Functionality with WPSOLR

While Elasticsearch provides powerful sorting capabilities, integrating it with WooCommerce can be a complex task. This is where the WPSOLR plugin comes in. WPSOLR is a popular WordPress plugin that simplifies the integration of Elasticsearch with WooCommerce and provides additional features to enhance product search and sorting.

WPSOLR offers a user-friendly interface to configure the Elasticsearch integration, allowing you to map WooCommerce product fields to Elasticsearch fields, customize the sorting criteria, and manage the indexing process. It also provides advanced search functionalities like faceted search and autocomplete.

By using WPSOLR, you can harness the power of Elasticsearch without delving into complex coding or configuration. The plugin handles the integration seamlessly, making it easier to implement advanced product sorting and enhance the overall search experience for your WooCommerce store.


Elasticsearch is a valuable tool for powering advanced product sorting in WooCommerce. By leveraging its sorting capabilities, you can enhance the default sorting options provided by WooCommerce and introduce custom sorting criteria based on relevance, availability, or any other desired attributes.

With the Elasticsearch PHP client, you can interact with Elasticsearch and perform indexing, searching, and sorting operations directly from your PHP code. Additionally, the WPSOLR plugin simplifies the integration process and provides additional features to enhance the search and sorting functionalities in your WooCommerce store.

By combining Elasticsearch, the PHP client, and WPSOLR, you can take your WooCommerce store to the next level by offering advanced product sorting options that align with your specific business requirements.

Read more related content

How Elasticsearch powers search

Introduction With the growing amount of data available on the internet, managing and searching through this data has become increasingly challenging. Elasticsearch is a search