ElasticPress

Plugin Banner

ElasticPress

by 10up

Download
Description

ElasticPress, a fast and flexible search and query engine for WordPress, enables WordPress to find or “query” relevant content extremely fast through a variety of highly customizable features. WordPress out-of-the-box struggles to analyze content relevancy and can be very slow. ElasticPress supercharges your WordPress website making for happier users and administrators. The plugin even contains features for popular plugins.

Here is a list of the amazing ElasticPress features included in the plugin:

Search: Instantly find the content you’re looking for. The first time.

Instant Results: A built for WordPress search experience that bypasses WordPress for optimal performance. Instant Results routes search queries through a dedicated API, separate from WordPress, returning results up to 10x faster than previous versions of ElasticPress.

WooCommerce: With ElasticPress, filtering WooCommerce product results is fast and easy. Your customers can find and buy exactly what they’re looking for, even if you have a large or complex product catalog.

Related Posts: ElasticPress understands data in real time, so it can instantly deliver engaging and precise related content with no impact on site performance.

Protected Content: Optionally index all of your content, including private and unpublished content, to speed up searches and queries in places like the administrative dashboard.

Documents: Indexes text inside of popular file types, and adds those files types to search results.

Autosuggest: Suggest relevant content as text is entered into the search field.

Filters: Add controls to your website to filter content by one or more taxonomies.

Comments: Indexes your comments and provides a widget with type-ahead search functionality. It works with WooCommerce product reviews out-of-the-box.

  1. First, you will need to properly install and configure Elasticsearch.
  2. Activate the plugin in WordPress.
  3. In the ElasticPress settings page, input your Elasticsearch host.
  4. Sync your content by clicking the sync icon.
  5. Enjoy!
  1. Features Page

    Features Page

  2. Search Fields & Weighting Dashboard

    Search Fields & Weighting Dashboard

  3. Sync Page

    Sync Page

  4. Synonyms Dashboard

    Synonyms Dashboard

  5. Instant Results modal

    Instant Results modal

How does ElasticPress work?

The ElasticPress plugin enables you to connect your WordPress site to the ElasticPress.io service, a SaaS solution that provides an enhanced search experience while reducing load on your WordPress site. For advanced users familiar with both WordPress and Elasticsearch hosting and management, ElasticPress also offers support for plugin functionality using an Elasticsearch instance. Please keep in mind that there are multiple security, performance, and configuration considerations to take into account if you take this approach.

I have to use an in-house or custom Elasticsearch solution due to policy or institutional requirements. Can you still help?

If circumstances prevent the use of a SaaS solution like ElasticPress.io, we can also provide consulting around installation and configuration of custom Elasticsearch instances.

Where can I find ElasticPress documentation and user guides?

Please refer to GitHub for detailed usage instructions and documentation. FAQs and tutorials can be also found on our support site.

I have a problem with the plugin. Where can I get help?

If you have identified a bug or would like to suggest an enhancement, please refer to our GitHub repo. We do not provide support here at WordPress.org forums.

If you are an ElasticPress.io customer, please open a ticket in your account dashboard. If you need a custom solution, we also offer consulting.

Where do I report security bugs?

You can report any security bugs found in the source code of ElasticPress through the Patchstack Vulnerability Disclosure Program. The Patchstack team will assist you with verification, CVE assignment and take care of notifying the developers of this plugin.

Is ElasticPress compatible with OpenSearch or Elasticsearch X.Y?

ElasticPress requirements can be found in the Requirements section of our GitHub repository. If your solution relies on a different server or version, you may find additional information on our Compatibility documentation page.

I really like ElasticPress! Can I contribute?

For sure! Feel free to submit ideas or feedback in general to our GitHub repo. If you can, also consider sending us a review.

Solid and easy to integrate and extend

By piccart on September 28, 2022

This plugin is solid and very easy to set up. It also integrates very well with custom code and the search functionality can be easily extended or customised.

speed of light - excellent!!!

By George (siou1975) on September 11, 2022

You need to read the documentation first then install it correctly to your server and boom!!

Terrible to integrate even on best hosting

By madaboutu on August 15, 2022

WPEngine couldn't even do it and they tried on chat every conceivable way We both gave up - shame really but super frustrating you have no way of easily getting in touch

One of the most powerful plugins for scaling WordPress

By BStreet (bstreet123456789) on June 15, 2022

Combined with a good server configuration this is one of the most powerful and useful plugins for WordPress sites at scale. Thank you 10up team!

Superb Plugin

By bling007 on March 30, 2022

Definitely helps speed up the WordPress search. It is at par with many other premium plugins out there. Highly appreciate and recommend this one. Also great support.

Love it

By walterzelhofer on February 12, 2022

Look people, you need to set up elasticSEARCH on your server first, or use a paid service. This plugin (elasticPRESS) works as advertised and it's clear that some ignorant people are penalizing this plugin for the difficulties inherent in setting up the server, and/or they don't know how to add custom code snippets here and there. Two thumbs way up from me.

Great Improvement

By Johannes Kinast (goaroundagain) on May 20, 2021

ElasticPress improved the search really great and has some very nice additional features like querying posts in a Multisite installation from a different Blog. You can host your own Elasticsearch server and its doesn't have any impact on the functionality of this plugin. You don't need to pay for the 10up hosted instances.

Onion code

By moacirrox on March 26, 2021

Onion code, full of layers and difficult to maintain, nothing objective in case I need to add anything customized, they worked to make a paginated query in elasticsearch so complex! If you need a different widget than the existing ones, it is quicker to start developing a new plugin than trying to modify it.

Its funny Plugin I have ever seen

By rajrathodbvn on January 1, 2021

Its Promoting Their own server. Our Local server even work smooth, its ignore and misguide us to use their paid server. I have running my localhost fine but its always say that there issue in connecting. 🙂

Simply Excellent

By sinho0689 on September 13, 2020

It works well with aws elasticsearch! It's still a simple setup, so I'll have to try it out, but it's still working fine. I didn't use EP hosting because I didn't even use woocommerce store, but I'd love to try EP hosting later!

5.3.2 – 2025-11-21

Added:

  • Notice about keeping the sync page open during the sync process. Props @felipeelia and @tott.

Fixed:

5.3.1 – 2025-11-06

Fixed:

5.3.0 – 2025-11-05

Highlights of this version:

  • Improved compatibility with Elementor
  • Better UX/UI in the Features Screen: Grouped features and conditional display of fields
  • New indicator in the WordPress Admin Bar: See if your content is powered by Elasticsearch and how many queries were fired and failed in the current page.

Added:

Changed:

  • Index srcset for post thumbnails. Props @burhandodhy and @JakePT.
  • Menu SVG icon with default WP color. Props @LenVan.
  • Aggregation data stored at query level instead of a global variable. Props @burhandodhy and @JakePT.
  • Text explaining when a manual sync may be required. Props @felipeelia and @anjulahettige.
  • ElasticPress.io endpoint to fetch messages and available services. Props @felipeelia.
  • [Autosuggest] WP_Query arguments are now passed to Elasticsearch->query() when setting allowed parameters. Props @felipeelia.
  • Exceptions thrown during a post sync will now become error messages in sync processes. Props @felipeelia.
  • Points the taxonomy filter URL to the facet section. Props @burhandodhy.
  • Bumped react-router-dom from 6.14.3 to 7.9.4. Props @burhandodhy.

Deprecated:

  • Remove deprecated side param from edge_ngram filter for ES 8.16.x compatibility. Props @rebeccahum.
  • The ep_bypass_exclusion_from_search filter (replaced by the new ep_skip_search_exclusions WP_Query argument). Props @burhandodhy and @JakePT.

Removed:

Fixed:

  • Autosuggest doesn’t work if the placeholder is changed via a ep_autosuggest_query_placeholder filter. Props @fabianmarz and @burhandodhy.
  • Link to compatibility documentation in admin notices. Props @dilipbheda.
  • [Metadata Range filter] Warning Undefined array key "is_preview". Props @burhandodhy.
  • ‘Filter by Taxonomy’ widget does not appear in Elementor. Props @burhandodhy.
  • Add support to handle values in array format when the comparison operator was ‘IN’ or ‘NOT IN’. Props @burhandodhy.
  • Users could see other authors’ private posts. Props @burhandodhy.
  • Undefined array key warning related to media mime types. Props @burhandodhy and @DarioBF.
  • Warning: value prop on “input” should not be null. Props @burhandodhy.
  • Comment query when orderby set to none. Props @burhandodhy.
  • JS warnings on Status Report page. Props @burhandodhy.

Security:

  • Bumped http-proxy-middleware from 2.0.7 to 2.0.9. Props @dependabot.
  • Bumped tar-fs from 3.0.8 to 3.1.1. Props @dependabot.
  • Bumped compression from 1.7.5 to 1.8.1. Props @dependabot.
  • Bumped form-data from 4.0.1 to 4.0.4. Props @dependabot.
  • Overwrite package @babel/runtime coming from core packages due to a vulnerability. Props @hugosolar.

Developer

  • Fixed e2e tests on WP 6.8. Props @felipeelia.
  • Migrated e2e tests from Cypress to Playwright. Props @felipeelia.

5.2.0 – 2025-04-10

This version bumps the minimum WordPress version to 6.2+.

Added:

  • New ACF Repeater Field Compatibility feature. Props @felipeelia.
  • Add new filter ep.InstantResults.filter.taxonomy.terms. Props @burhandodhy and @syedc.
  • Support to “number” fields in the Features Settings API. Props @felipeelia.
  • Add include, exclude, upper-limit-object-id, and lower-limit-object-id support for the term and comment indexable. Props @burhandodhy.
  • Ability to display results on focus back + cached autosuggest results on same query. Props @oscarssanchezz, @JakePT, and @felipeelia.
  • Document status displayed in the admin bar. Props @felipeelia, @tott, and @burhandodhy.

Changed:

  • Minimum required version of WordPress (from 6.0 to 6.2). Props @felipeelia.
  • ElasticPress\Feature\RelatedPosts::get_related_query(), ElasticPress\Feature\RelatedPosts::find_related() parameter name change to $post_return. Props @oscarssanchez and @felipeelia.
  • The ep_remote_request action to also run on non-blocking requests. Props @felipeelia.
  • Potentially resource intensive status reports are loaded on demand with AJAX. Props @oscarssanchezz, @felipeelia, and @archon810.
  • If a feature doesn’t have all its requirements fulfilled, prevent it to run its setup method. Props @felipeelia.

Fixed:

  • PHP warning: Attempt to read property “base” on null. Props @burhandodhy and @yarovikov.
  • Notice not displayed while updating a term. Props @burhandodhy and @MARQAS.
  • PHP Notice: Function _load_textdomain_just_in_time was called incorrectly. Props @burhandodhy.
  • PHP 8.4: Implicitly marking parameter $woocommerce as nullable is deprecated. Props @BrookeDot.
  • WP-CLI sync timer resetting after 16 minutes. Props @felipeelia and @columbian-chris.
  • Cannot get outside of autosuggest list pressing up on first item. Props @oscarssanchezz, @JakePT, and @felipeelia.
  • Prevent other code from modifying the ORDERBY clause in Post and Term indexable queries. Props @burhandodhy and @felipeelia.
  • Date Query returns no result when the before and after range is the same and inclusive is set to true. Props @burhandodhy and @ErikBrendel.
  • Warning for undefined “post_type” array key. Props @econscript.
  • Delete a post from the index if it had a password added. Props @felipeelia and @dtakken.
  • [Synonyms] Linebreaks being wrongly replaced in Windows Systems. Props @nymwo.
  • Deprecated 36px default size is deprecated warnings. Props @burhandodhy.
  • The Sync Complete message being displayed when the log is cleared. Props @felipeelia and @burhandodhy.
  • Selecting a value in the date filter not redirecting users back to page 1. Props @felipeelia and @burhandodhy.
  • Discard Changes button coming back when saving the feature twice. Props @felipeelia and @burhandodhy.
  • WooCommerce Orders Incompatibility not appearing when plugin is activated network wide. Props @burhandodhy.

Security:

  • Bumped serialize-javascript from 6.0.1 to 6.0.2, jsdoc from 3.6.11 to 4.0.4, and taffydb. Props @dependabot.
  • Bumped tar-fs from from 3.0.6 to 3.0.8. Props @dependabot.

Developer:

5.1.4 – 2024-12-12

Added:

Changed:

  • Apply ElasticPress filters to the requests in status and stats CLI commands. Props @edpittol.
  • Autosuggest Endpoint field explanation. Props @burhandodhy and @felipeelia.
  • Alignment of custom search results action icons. Props @felipeelia and @anjulahettige.
  • Update all of our blocks apiVersion from 2 to 3, to indicate support for working in an iframed editor. Props @dkotter and @JakePT.
  • If using the new way to index meta, avoid querying distinct meta fields in the sync page. Props @felipeelia and @majiix.
  • Updated several composer and node packages. Node 20 is now the default version. Props @felipeelia.
  • Improve readability of sync output (MB/GB) and number formatting on the Health Status page. Props @columbian-chris.

Fixed:

  • Hardcoded tmp path replaced with a dynamic value. Props @burhandodhy.
  • Variable names and descriptions in the docblocks for ep_formatted_args and ep_post_formatted_args. Props @barryceelen.
  • Remove ‘None’ from Highlight tag list. Props @burhandodhy.
  • [Facets] Incorrect link on description when not using a block theme. Props @felipeelia and @burhandodhy.
  • Deprecation warning in strtotime() call. Props @felipeelia and @barryceelen.
  • Special characters like \ in search terms for both Autosuggest and Instant Results. Props @felipeelia and @burhandodhy.
  • [WooCommerce] Incompatibility when “Enable table usage” was enabled to filter the product catalog. Props @felipeelia and @burhandodhy.
  • Deprecation warning related to PluginPostStatusInfo. Props @burhandodhy and @felipeelia.
  • [Custom Results] Inconsistent Reordering Issue. Props @felipeelia, @anjulahettige, @burhandodhy.
  • Update supported document file types in Documents feature summary. Props @burhandodhy.
  • “Exclude from search results” to work in AJAX contexts. Props @felipeelia and @burhandodhy.
  • Retain CR & RD Labels Upon Saving Custom Search Result Posts. Props @felipeelia and @anjulahettige.
  • Typo in “All filters” text domain. Props @felipeelia and @arturomonge.
  • Autosuggest GA tracking to work when ad blocks are enabled. The dataLayer.push() call now pushes a custom event called ep_autosuggest_click with ep_autosuggest_search_term and ep_autosuggest_clicked_url as custom parameters. Props @felipeelia and @anjulahettige.
  • Delay load_plugin_textdomain to init and set a Domain Path. Props @felipeelia.
  • Only display the Exclude From Search checkbox if the post type supports custom-fields. Props @felipeelia and @maartenhunink.
  • JS error when submit button is clicked without selecting a date. Props @burhandodhy.
  • Deprecated warnings for margin style. Props @burhandodhy.

Security:

  • Bumped composer/composer from 2.7.0 to 2.7.8. Props @dependabot.
  • Bumped symfony/process from 6.4.8 to 6.4.14. Props @dependabot.

Developer:

  • Tests use ES 8 by default. Props @felipeelia.
  • Update E2E tests to work properly with the iframed block editor. Props @dkotter.
  • E2e tests for WP 6.6. Props @felipeelia.
  • E2e tests for WP 6.7. Props @felipeelia.
  • Unit Tests: Fail faster on requests we know will fail. Props @felipeelia.
  • E2e tests: Fix the debug-bar-elasticpress dependency of ElasticPress. Props @felipeelia.

5.1.3 – 2024-06-11

Fixed:

  • Missing nonces on some sync trigger URLs, making them require a manual interaction from the user. Props @felipeelia.

5.1.2 – 2024-06-11

This is a security release affecting all previous versions of ElasticPress.

Security:

  • Missing nonce verification for the sync triggered during activation of some features. Props @felipeelia and @dhakalananda.
  • Missing nonce verification for retrying the EP connection and fixed PHPCS linting rules. Props @felipeelia.

5.1.1 – 2024-05-27

Changed:

Fixed:

  • Status report page when indexable post types is an empty array. Props @furai.

5.1.0 – 2024-04-29

Added:

  • [Filters] New ep_facet_enabled_in_editor filter to enabled facet blocks in the post editor. Props @JiveDig and @felipeelia.
  • Official support to Elasticsearch 8.x. Props @felipeelia.
  • A new Sync errors tab, with errors grouped by type and links to support documentation when available. Props @JakePT and @apurvrdx1.
  • [WooCommerce] HPOS compatibility notice for WooCommerce Orders. Props @felipeelia.
  • [Synonyms] A new settings screen with the the ability to bulk delete synonyms, support for many-to-many replacements, and a new type of synonym for terms with a hierarchical relationship, called hyponyms. Props @JakePT and @apurvrdx1.
  • Infinite loop when using excerpt highlighting with posts that use blocks that print an excerpt. Props @felipeelia and @JakePT.
  • Context parameter to the get_capability() function. Props @felipeelia and @selim13.
  • A tooltip for meta keys to the weighting screen to allow seeing the full key if it has been truncated. Props @JakePT.
  • New ep_weighting_options filter to modify the weighting dashboard options. Props @burhandodhy.
  • New ep_post_test_meta_value filter. Props @felipeelia.
  • New message related to indices limits on ElasticPress.io. Props @felipeelia.

Changed:

  • Acknowledge all Elasticsearch modules, making the Documents feature available in ES 8 installations by default. Props @felipeelia, @Serverfox, and @jerasokcm.
  • [Documents] Index CSV and TXT file contents. Props @felipeelia.
  • [Documents] Only set documents-related parameters if no post type was set or if the list already contains attachments. Props @felipeelia.
  • Automatically open the error log when a sync completes with errors. Props @JakePT and @felipeelia.
  • Aggregations created with the ‘aggs’ WP_Query parameter, are now retrievable using $query->query_vars['ep_aggregations']. Props @felipeelia.
  • Major refactor of the Term::format_args() method and conditionally set search fields for term queries in REST API requests. Props @felipeelia and @mgurtzweiler.
  • Replaced lee-dohm/no-response with actions/stale to help with closing no-response/stale issues. Props @jeffpaul.
  • Bumped actions/upload-artifact from v3 to v4. Props @iamdharmesh.
  • Required node version. Props @oscarssanchez.

Fixed:

  • [Autosuggest] Hide the Autosuggest Endpoint URL field for EP.io users. Props @felipeelia and @JakePT.
  • [Autosuggest] Google Analytics integration gtag call. Props @felipeelia and @JakePT.
  • [Autosuggest] Link click when using a touchpad. Props @romanberdnikov.
  • [Autosuggest] Pressing Enter to select an Autosuggest suggestion would instead open Instant Results. Props @JakePT.
  • [Synonyms] Fatal error when saving synonyms if an index does not exist. Props @felipeelia, @MARQAS, @randallhedglin, and @bispldeveloper.
  • [Synonyms] Fix Synonyms case sensitive issue. Props @burhandodhy.
  • [Documents] Media search returns no result in admin dashboard. Props @felipeelia and @burhandodhy via #3837.
  • [WooCommerce] E2e tests. Props @felipeelia.
  • [Instant Results] A default post type filter set by a field in the search form was cleared if a new search term was entered. Props @JakePT and @burhandodhy.
  • Inconsistent search results when calling the same function via PHP and Ajax. Props @burhandodhy.
  • Unit test related to blog creation. Props @felipeelia and @burhandodhy.
  • Correct PHPdoc return type for Elasticsearch::index_document and related methods. Props @ictbeheer.
  • Unnecessary horizontal scroll for the <pre> tag on the status report page. Props @burhandodhy via #3894.

Security:

  • Bumped composer/composer from 2.6.5 to 2.7.0. Props @dependabot.

5.0.2 – 2024-01-16

Changed:

  • [Terms] Counts are now calculated with wp_count_terms() in query_db. Props @rebeccahum.
  • Composer and npm files are now part of the final package. Props @felipeelia.

Fixed:

  • [WooCommerce] Not use a hard-coded list of order post types. Props @felipeelia.
  • [Autosuggest] Stop calling the get-autosuggest-allowed endpoint to build the REST API schema. Props @felipeelia.

Security:

  • Bumped follow-redirects from 1.15.3 to 1.15.4. Props @dependabot.

5.0.1 – 2023-12-12

Added:

  • Failed queries in the Index Health page will now be outputted with their error messages. Props @felipeelia and @pvnanini.

Fixed:

5.0.0 – 2023-11-01

ElasticPress 5.0.0 contains some important changes. Make sure to read these highlights before upgrading:

  • This version does not require a full reindex but it is recommended, especially for websites using synonyms containing spaces.
  • Meta keys are not indexed by default anymore. The new Weighting Dashboard allows admin users to mark meta fields as indexables. The new ep_prepare_meta_allowed_keys filter allows to add meta keys programmatically.
  • Features now have their fields declared in JSON. Custom features may need to implement the set_settings_schema() method to work.
  • The Users feature was moved to the ElasticPress Labs plugin and is no longer available in this plugin. If you use this feature, make sure to install and configure EP Labs before upgrading.
  • The Terms and Comments features are now hidden by default for sites that do not have them active yet. Check our blog post for more info.
  • New minimum versions are:
    • Elasticsearch: 5.2
    • WordPress: 6.0
    • PHP: 7.4

Added:

Changed:

  • Abstracted Sync page logic into a provider pattern. Props @JakePT.
  • Moved syncing from an admin-ajax.php callback to a custom REST API endpoint with support for additional arguments. Props @JakePT.
  • Store previous syncs info, changed option name from ep_last_index to ep_sync_history. Props @felipeelia and @JakePT.
  • Features settings declared as JSON. Props @felipeelia and @JakePT.
  • Tweaked layout and notifications style on the Status Report screen for consistency with the updated Sync page. Props @JakePT.
  • Moved REST API endpoint definitions to controller classes. Props @JakePT.
  • SyncManager array queues are now indexed by the blog ID. Props @sathyapulse and @felipeelia.
  • Comments and Terms are now hidden by default. Props @felipeelia.
  • WooCommerce-related hooks are now removed when switching to a site that does not have WC active. Props @felipeelia and @MARQAS.
  • Run e2e tests against the minimum supported WordPress version. Props @felipeelia.
  • Several tweaks in the Features settings API. Props @JakePT via #3708.
  • EP Settings are now reverted if it is not possible to connect to the new ES Server. Props @felipeelia, @burhandodhy, and @scottbuscemi.
  • Node packages updated. Props @felipeelia.
  • Updated the labels of feature settings and options for consistency and clarity. Props @JakePT.
  • Depending on the requirements, some feature settings are now saved to be applied after a full sync. Props @felipeelia and @JakePT.
  • Minimum requirements. Props @felipeelia and @brandwaffle.
  • Old features will have their settings displayed based on their default setting values. Props @felipeelia and @JakePT.
  • Radio and checkbox settings were changed from booleans to strings. Props @felipeelia and @JakePT.
  • The troubleshooting article link was updated. Props @felipeelia and @anjulahettige.

Deprecated:

  • The IndexHelper::get_last_index method was replaced by IndexHelper::get_last_sync.
  • The FailedQueries::maybe_suggest_solution_for_es method was replaced by ElasticsearchErrorInterpreter::maybe_suggest_solution_for_es.
  • Weighting::render_settings_section, Weighting::handle_save, Weighting::redirect, and Weighting::save_weighting_configuration were deprecated in favor of React components.

Removed:

  • Users-related files from the main plugin. Props @felipeelia.
  • Removed mapping files related to older versions of Elasticsearch. Props @MARQAS.

Fixed:

  • Docblock for the ep_facet_renderer_class filter. Props @misfist.
  • Instant Results console warning. Props @burhandodhy.
  • Total fields limit message interpretation. Props @felipeelia @JakePT.
  • End to end tests intermittent failures. Props @felipeelia.
  • React warning on Sync page. Props @burhandodhy.
  • Content was not showing properly on the tooltop on install page. Props @burhandodhy.
  • Redirect to correct sync url after enabling feature that requires a new sync. Props @burhandodhy.
  • Post type setting wasn’t respected during sync. Props @burhandodhy.
  • Fix a JS error appearing when sync requests are intentionally stopped. Props @burhandodhy.
  • Features description copy. Props @felipeelia, @burhandodhy, and @MARQAS.
  • Endpoint URL field is not a URL type field. Props @burhandodhy.
  • WooCommerce feature not autoactivating. Props @felipeelia.
  • Elasticsearch errors interpretation. Props @felipeelia.
  • Deactivating a feature via WP-CLI also takes into account draft states. Props @felipeelia.

View historical changelog details here.

Back to top