WordPress Search is Rudimentary
• Only searches post title, content, and excerpt.
• Relies on MySQL and thus is slow.
• Relevancy calculations are poor and overly
• Not able to handle any advanced ﬁltering.
• Open-source search server written in Java
based on a technology called Lucene (open-
source search software by Apache).
• A standalone database server that provides a
RESTful interface to accept and store data in a
way that is optimized for search and multi-
• Extremely scalable, performant, and reliable
• Relevant results
• Performant aggregation queries
• Fuzzy matching
• Geographic searches and queries
• Filterable searches and queries
• Data weighting
• Much more
Get an Elasticsearch Server
• Very ﬂexible and customizable. There is not
really a “one size ﬁts all” setup. Generally, you
have two options:
• Option 1: Pay someone else to manage/host
your Elasticsearch cluster (SaaS)
• Option 2: Host your own cluster
What is ElasticPress?
ElasticPress is a fast and ﬂexible search and
query engine for WordPress.
• Instantly ﬁnd the content you’re looking for. The
ﬁrst time. Advanced relevancy algorithm which
includes date weighting, term/meta searching,
fuzzy matching, and more.
• Search and query across multiple blogs in a
• Extremely performant related content widget.
• Dramatically improve performance of admin queries to
assist editors in ﬁnding content.
• Indexes text inside of popular ﬁle types (pdf, ppt, doc,
etc), and adds those ﬁles types to search results.
• Autosuggest for search - suggest relevant content as
text is entered into the search ﬁeld.
• WooCommerce integration that improves faceting and
product look up speed as well as order search in the
• WordPress 3.7+
• An instance of Elasticsearch.
Advanced Query API
• Search taxonomy terms
• Filter by taxonomy terms (unlimited dimensions)
• Search post meta
• Filter by post meta (unlimited dimensions)
• Search authors
• Filter by authors
• Search across blogs in multisite
• Complex date ﬁltering
new WP_Query( array(
’s’ => ‘vienna austria’,
‘sites’ => ‘all’,
• We want to be able to run all (slower) WP_Query
instances through Elasticsearch.
• This means we have to support every query
parameter which isn’t the case yet. Github
contains a full list of parameters WP_Query
supports with ElasticPress and usage for each
ElasticPress in Your Language
• ElasticPress is designed to be internationalized.
• Out of the box, it will work ﬁne with most
Analysis and Analyzers
• When a document is indexed in Elasticsearch,
text is analyzed, broken into terms (tokenized),
and normalized with token ﬁlters.
• In normalization, strings might be lowercased
and plurals stripped.
• ElasticPress by default uses a pretty standard set of
analyzers intended for the English language.
• We can easily customize our analyzers for use with
other languages by ﬁltering ep_conﬁg_mapping
(see EP source code).
• You can read about language speciﬁc analyzers here:
Full documentation with installation instructions:
Feedback and Continuing Development
• If you are using ElasticPress on a project, please
let us know and give us feedback.
• Pull requests are welcome!
We need to send a PUT request to this endpoint with
our post data. Of course we must authenticate before