This document discusses using Elasticsearch to improve WordPress search capabilities. It introduces ElasticPress, an open-source WordPress plugin that uses Elasticsearch for fast, relevant search across content. The plugin indexes WordPress content into Elasticsearch for complex queries, filtering, advanced relevancy, and more. The document provides installation instructions and examples of advanced queries that ElasticPress enables for WordPress, like searching across taxonomies, post meta, authors, and more in a highly performant way.
2. Who Am I?
• My name is Taylor Lovett
• Director of Web Engineering at 10up
• Open source community member
• WordPress core contributor
• ElasticPress team member
@tlovett12
4. WordPress Search is Rudimentary
• Only searches post title, content, and excerpt.
• Relies on MySQL and thus is slow.
• Relevancy calculations are poor and overly
simplistic.
• Not able to handle any advanced filtering.
8. Elasticsearch
• 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-
dimensional queries.
• Extremely scalable, performant, and reliable
9. Elasticsearch
• Relevant results
• Performant aggregation queries
• Autosuggest
• Fuzzy matching
• Geographic searches and queries
• Filterable searches and queries
• Data weighting
• Much more
10. Get an Elasticsearch Server
• Very flexible and customizable. There is not
really a “one size fits 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
14. ElasticPress Features
• Instantly find the content you’re looking for. The
first time. Advanced relevancy algorithm which
includes date weighting, term/meta searching,
fuzzy matching, and more.
• Search and query across multiple blogs in a
multisite instance.
• Extremely performant related content widget.
15. ElasticPress Features
• Dramatically improve performance of admin queries to
assist editors in finding content.
• Indexes text inside of popular file types (pdf, ppt, doc,
etc), and adds those files types to search results.
• Autosuggest for search - suggest relevant content as
text is entered into the search field.
• WooCommerce integration that improves faceting and
product look up speed as well as order search in the
admin.
23. 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 filtering
• more!
30. WP_Query Integration
• 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
parameter.
31. ElasticPress in Your Language
• ElasticPress is designed to be internationalized.
• Out of the box, it will work fine with most
languages.
32. Analysis and Analyzers
• When a document is indexed in Elasticsearch,
text is analyzed, broken into terms (tokenized),
and normalized with token filters.
• In normalization, strings might be lowercased
and plurals stripped.
33. Custom Analyzers
• 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 filtering ep_config_mapping
(see EP source code).
• You can read about language specific analyzers here:
http://www.elasticsearch.org/guide/en/elasticsearch/
reference/current/analysis-lang-analyzer.html
35. Feedback and Continuing Development
• If you are using ElasticPress on a project, please
let us know and give us feedback.
• Pull requests are welcome!
36. Questions?
We need to send a PUT request to this endpoint with
our post data. Of course we must authenticate before
doing this.
@tlovett12
taylor.lovett@10up.com
http://elasticpress.io