Optimizing WooCommerce Product Filtering with Elasticsearch

Table of Contents


WooCommerce is a popular e-commerce platform for WordPress that allows businesses to set up online stores and sell products. One crucial aspect of any e-commerce store is the ability for customers to filter and search for products effectively. By default, WooCommerce provides basic filtering options, but as your store grows and you have a large inventory, you may need a more robust and efficient solution.

This is where Elasticsearch, a powerful search and analytics engine, comes into play. Elasticsearch is known for its speed, scalability, and advanced search capabilities. By integrating Elasticsearch with WooCommerce, you can significantly optimize your product filtering and searching experience for your customers.

In this post, we will explore how to optimize WooCommerce product filtering using Elasticsearch. We will also provide examples of code using the PHP Elasticsearch client to interact with Elasticsearch.

Optimizing WooCommerce Product Filtering with Elasticsearch

To begin, let’s outline the steps involved in optimizing WooCommerce product filtering with Elasticsearch:

1. Install and configure Elasticsearch: Start by installing Elasticsearch on your server or utilizing a managed Elasticsearch service. Once installed, configure the Elasticsearch settings according to your requirements.

2. Indexing WooCommerce products: Next, you need to index your WooCommerce products in Elasticsearch. This involves extracting relevant data from your products and storing it in Elasticsearch for efficient searching and filtering. You can use the WooCommerce REST API or directly access the database to fetch product data.

3. Mapping and analyzers: Elasticsearch uses mappings to define how data is indexed and searched. By configuring appropriate mappings for your product data, you can optimize the search experience. Additionally, analyzers help Elasticsearch tokenize and process text, enabling more accurate search results. You can define custom analyzers tailored to your product attributes.

4. Filtering and querying: Elasticsearch provides a powerful query DSL (Domain-Specific Language) to perform complex filtering and querying operations. You can utilize various query types like term queries, range queries, and bool queries to filter products based on attributes such as price, category, color, etc.

5. Faceted navigation: Faceted navigation allows users to refine their search results by selecting specific attributes. By leveraging Elasticsearch’s aggregation feature, you can create facets for attributes like color, size, brand, etc. These facets dynamically update based on the current search context, providing a seamless filtering experience.

Now let’s dive into some code examples using the PHP Elasticsearch client.

Code Example: PHP Client for Elasticsearch

// Include the Elasticsearch PHP client library
require 'vendor/autoload.php';

// Specify the Elasticsearch server details
$hosts = [
 'host' => 'localhost',
 'port' => 9200,
 'scheme' => 'http',

// Create a new Elasticsearch client instance
$client = Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build();

// Define the index and type for your WooCommerce products
$index = 'woocommerce';
$type = 'product';

// Index a product in Elasticsearch
$product = [
 'id' => 123,
 'title' => 'Example Product',
 'price' => 49.99,
 'category' => 'Electronics',
 'color' => 'Black',

$params = [
 'index' => $index,
 'type' => $type,
 'id' => $product['id'],
 'body' => $product,

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

// Perform a search query with filters
$params = [
 'index' => $index,
 'type' => $type,
 'body' => [
 'query' => [
 'bool' =>
   'filter' => [
     ['term' => ['category' => 'Electronics']],
     ['range' => ['price' => ['gte' => 50]]],

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

// Process the search results
$hits = $response['hits']['hits'];

foreach ($hits as $hit) {
// Display the product details
$product = $hit['_source'];
 echo $product['title'] . ' - $' . $product['price'];

This code snippet demonstrates how to index a product in Elasticsearch and perform a search query with filters based on category and price. You can extend and modify these examples to suit your specific needs.

How WPSOLR Can Help

While implementing Elasticsearch for WooCommerce product filtering can be done manually, it can be a complex and time-consuming task. This is where WPSOLR, a WordPress plugin, comes to the rescue.

WPSOLR simplifies the integration of Elasticsearch with WooCommerce by providing a user-friendly interface and automating many of the technical steps. With WPSOLR, you can easily configure your Elasticsearch settings, index products, define mappings, and set up advanced filtering options without writing code.

Additionally, WPSOLR offers features like faceted navigation, autocomplete suggestions, and real-time indexing, enhancing the search experience for your customers. It also provides robust compatibility with other WordPress plugins, making it an ideal choice for optimizing WooCommerce product filtering with Elasticsearch.


Optimizing WooCommerce product filtering with Elasticsearch can significantly enhance the search and filtering capabilities of your e-commerce store. By leveraging Elasticsearch’s powerful search engine and integrating it with WooCommerce using the PHP Elasticsearch client, you can provide your customers with a seamless and efficient product browsing experience.

Remember to install and configure Elasticsearch, index your WooCommerce products, define mappings and analyzers, and utilize Elasticsearch’s querying and filtering capabilities. Additionally, consider using WPSOLR to simplify the integration process and take advantage of its advanced features.

With these optimizations in place, you can ensure that your customers can easily find the products they are looking for, resulting in improved user satisfaction, higher conversion rates, and ultimately, a successful e-commerce business.

Read more related content

demo woocommerce flatsome 100 thousand products
Did you know that Elasticsearch is free on Cloudways?

Why not use it with elasticpress.io or wpsolr.com or wpsolr free https://wordpress.org/plugins/wpsolr-free/ to power your WooCommerce or #WordPress? Try the Elasticsearch demo on Cloudways with WPSOLR: https://demo-woocommerce-flatsome-cloudways.wpsolr.com/shop/ The configuration is described in the link.