VIP Enterprise Search was developed by WordPress VIP to expand the usage of Elasticsearch, providing both a search solution and a performance-enhancing layer to existing WordPress searches and queries.
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 also be enabled in a VIP Local Development Environment.
- VIP does not provide a public endpoint for running searches. Enterprise Search relies on a secure API to provide a powerful set of capabilities. Therefore, Elasticsearch results are rather raw, and VIP does not recommend attempting to proxy the search results.
- Currently, the ElasticPress features Autosuggest, Comments, Documents, and Instant Results cannot be enabled for Enterprise Search.
- If a search query attempts to retrieve more than 10,000 documents (search results) from an Elasticsearch index, the query will instead fall back to a regular MySQL database query. Use of pagination for search results will not avoid this limitation and fallback behavior. This is a standard limitation in place to protect the performance and memory usage of an Elasticsearch instance.
- A default character length limit of 510 is applied to users with an
edit_postscapability and 80 for users without. The
vip_search_char_length()filter can be used to modify these limitations to a character limit between 0-510.
- Data sync only syncs the SQL database of a production environment 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.
_doing_it_wrong()calls are used throughout the Enterprise Search code to throw configuration warnings.
- VIP applies rate limiting to protect the search services from instability caused by spikes in requests.
- 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 WordPress’s built-in data access functions.
Last updated: February 16, 2024