Skip to content

Enterprise Search

Enterprise Search was developed by WordPress VIP to allow the usage of Elasticsearch to provide both a search solution and a performance-enhancing layer to existing WordPress searches and queries.

In Enterprise Search, a fork of ElasticPress provides Elasticsearch indexing and search, and a fork of es-wp-query provides query offloading capabilities via an Enterprise Search adapter.

The Enterprise Search feature is enabled via code and its features can be enabled by VIP-CLI. Enterprise Search indexes can be indexed and versioned with VIP-CLI. Search Dev Tools and the VIP-CLI health command are available to assist with debugging and troubleshooting.

Enterprise Search can be enabled in a VIP Local Development Environment.

Technical considerations

  • There is a limitation of returning only the first 10000 documents during a search query. If the query is trying to retrieve more documents, it will not offload to ElasticSearch and instead, use a regular DB query. Pagination does not alleviate this limitation.
    For example, even if only 16 documents are being searched for, if they do not exist within the first 10000 documents, the query will not run against ElasticSearch.
  • Data sync only copies production data to a non-production environment. It does not create, affect, or modify any Elasticsearch indexes in the target non-production environment. The target environment’s Elasticsearch indexes must be created or versioned following the data sync.
  • Throughout the Enterprise Search code, you’ll find _doing_it_wrong() calls are used to throw configuration warnings.
  • Rate limiting is a measure VIP put in place to protect the search services from spikes in requests that may cause instability.
  • To query for and obtain post data (i.e. search results) in JSON format directly from a browser or other client via an AJAX request, a custom, cacheable, API adapter route should be built to limit the types of queries that can be made, and use only the post IDs from the raw Elasticsearch results. Any other details from Elasticsearch should not be used for constructing a user interface. To obtain any additional post or comment details from WordPress (e.g. post title, URL, etc.), use built-in data access functions of WordPress.
  • Enterprise Search relies on a secure API to provide a powerful set of capabilities and currently, does not provide a public endpoint for running searches. Therefore, Elasticsearch results are rather raw and VIP does not recommend attempting to proxy the search results.

Last updated: May 12, 2022