Different Elasticsearch search patterns for WooCommerce

Table of Contents


Elasticsearch has emerged as a popular solution for building search functionality into web applications. WooCommerce, being one of the leading eCommerce platforms, can greatly benefit from integrating Elasticsearch to enhance search capabilities. In this post, we will explore different Elasticsearch search patterns specifically tailored for WooCommerce, along with some code examples to get you started.

Elasticsearch PHP Client

To use Elasticsearch in your WooCommerce store, you need to communicate with the Elasticsearch server using a programming language. In this example, we will be using the official Elasticsearch PHP client.

The first step is to install the Elasticsearch PHP client library using Composer. Open your terminal and navigate to your WooCommerce project directory. Run the following command:

Next, let’s create a simple search function that uses Elasticsearch to perform the search:

This code snippet creates an instance of the Elasticsearch PHP client and defines a function called `searchProducts()` that takes a search query as a parameter. It then constructs a search query using the match query type to search for products whose name matches the provided query. The search results are returned as an array.

Different Elasticsearch Search Patterns for WooCommerce

1. Basic Full-Text Search

The basic full-text search pattern allows users to enter a query and get relevant results based on matching terms. In the code snippet above, we used the `match` query type to perform a basic full-text search on the product names.

2. Filtering by Category

In an eCommerce store like WooCommerce, it is often necessary to filter search results based on product categories. Elasticsearch provides various filtering options to achieve this. Here’s an example of how to filter search results by category:

This code snippet demonstrates how to filter search results by a specific category. We use the `bool` query type to combine the `match` query for the search term and the `term` query for the category.

3. Sorting by Popularity

Sorting search results by popularity is a common requirement in eCommerce stores. Elasticsearch provides the `function_score` query type to easily incorporate popularity-based sorting into search queries. Here’s an example of how to sort search results by popularity:

This code snippet demonstrates how to incorporate popularity-based sorting into search queries. We use the `function_score` query type along with the `field_value_factor` function to boost the relevance score based on the popularity field. The `score_mode` parameter is set to ‘sum’ to calculate the final score as the sum of the query score and popularity score.

How WPSOLR can help

While the code examples above provide a starting point for implementing Elasticsearch search in WooCommerce, it can be a complex task to handle all the nuances and requirements of an eCommerce search solution. This is where WPSOLR comes in.

WPSOLR is a powerful search plugin for WordPress and WooCommerce that integrates seamlessly with Elasticsearch. It provides a user-friendly interface to configure and customize your search settings. With WPSOLR, you can easily set up advanced search features like faceted search, autocomplete, and filtering by attributes, all tailored for WooCommerce.

In addition, WPSOLR offers extensive documentation and support to help you get the most out of your WooCommerce search implementation. Whether you’re a beginner or an experienced developer, WPSOLR simplifies the process and ensures a smooth and efficient search experience for your WooCommerce customers.


Elasticsearch is a powerful tool for enhancing search functionality in WooCommerce stores. By leveraging Elasticsearch’s search patterns and the capabilities of the Elasticsearch PHP client, you can create an effective and efficient search experience for your WooCommerce customers. Additionally, WPSOLR provides a comprehensive solution tailored specifically for WooCommerce, making it easier to implement advanced search features and improve the overall search experience.

Read more related content

Reranking is the new frontier!

Cohere‘s reranking API is indeed a very neat way of improving search quality without downgrading performance. I’m wondering if it can also improve Cohere‘s own multi-language