{"id":2806,"date":"2018-11-09T11:29:03","date_gmt":"2018-11-09T11:29:03","guid":{"rendered":"https:\/\/2018.seattle.wordcamp.org\/?p=2806"},"modified":"2018-11-08T03:31:04","modified_gmt":"2018-11-08T03:31:04","slug":"limited-search-solution","status":"publish","type":"post","link":"https:\/\/seattle.wordcamp.org\/2018\/limited-search-solution\/","title":{"rendered":"A Solution to Limited Search"},"content":{"rendered":"<p><em><span style=\"font-weight: 400\">Written by Vasken Hauri, Vice President, Platforms &amp; Systems at <a href=\"https:\/\/www.elasticpress.io\/\" target=\"_blank\" rel=\"noopener\">ElasticPress.io<\/a><\/span><span style=\"font-weight: 400\">, one of our sponsors.<\/span><\/em><\/p>\n<p>WordCamps are a great way to see the strength of the WordPress community up close. At WordCamp Seattle, you can connect with hundreds of WordPress developers, designers, and publishers. <u><a href=\"https:\/\/www.elasticpress.io\/\">ElasticPress.io<\/a><\/u> is proud to support the WordPress community as a sponsor of another WordCamp Seattle. There\u2019s an indelible link between an open, collaborative internet, the strength of the tools and platforms that drive experiences on the web, and the community that builds it all. WordCamps provide an integral opportunity to grow and educate that community, which is why <u><a href=\"https:\/\/10up.com\" rel=\"nofollow\">10up<\/a><\/u>\u2014the company behind ElasticPress\u2014has been sponsoring WordCamps since our founding back in 2011.<\/p>\n<p><strong>ElasticPress.io is 10up\u2019s solution to the limited search features and other query bottlenecks endemic to WordPress core, especially when used at scale. <\/strong><\/p>\n<h2>MySQL<\/h2>\n<p>You see, out of the box, <u><a href=\"https:\/\/codex.wordpress.org\/Installing_WordPress#Using_the_MySQL_Client\">WordPress uses MySQL<\/a><\/u> to organize and store content\u2014a popular database making WordPress accessible to developers, and making it possible for small sites to access cheap hosting. However, databases like MySQL aren\u2019t optimized for freeform search and more complicated filtering and faceting. So much so that, by default, WordPress search only looks at post titles and content, omitting valuable data that might be stored in places like custom fields. Multifaceted queries\u2014say, looking for (1) women\u2019s (2) t-shirts in size (3) medium that are (4) in stock and (5) less than $30 are slow and taxing on hosts, and, with so many combinations, cannot easily be circumvented with conventional techniques like caching. This limits the options for large-scale databases or sites running in a shared hosting environment.<\/p>\n<p>Some plugins work around some of these challenges in inspired ways, but most are restricted to mitigating unavoidable MySQL limits. The more your content grows\u2014whether you\u2019re a newsroom with thousands of stories or a store with hundreds of SKUs\u2014and the more ways to filter that content,\u00a0the more unavoidable the problem becomes. Plugins, like <u><a href=\"https:\/\/searchwp.com\/\">SearchWP<\/a><\/u> and <u><a href=\"https:\/\/www.relevanssi.com\/\">Relevanssi<\/a><\/u>, do a good job of addressing the weaknesses inherent in default WordPress search, but we believe these best serve sites with smaller databases, or perhaps up to a few thousand posts. Larger sites will require a different solution.<\/p>\n<h2>Elasticsearch<\/h2>\n<p>This challenge, plaguing a rapidly scaling internet, spawned a new generation of \u201cnoSQL\u201d content storage and search solutions\u2014one of the most popular being <u><a href=\"https:\/\/www.elastic.co\/products\/elasticsearch\">Elasticsearch<\/a><\/u>. Elasticsearch is an open-source, third-party service that can filter between different types of content, categories, tags, authors, date ranges, etc. It must be run on hosting accounts through a dedicated hosting environment. Further, it requires extensive configuration. With no structure inherent to itself, the setup of Elasticsearch requires the input of all data components, field types, languages, or any other custom elements your schema requires. This makes it a great option for sites supported by experienced development teams.<\/p>\n<p>Seeing the need for a full-featured search solution for large-scale sites, and determined to help them keep pace and not \u201coutgrow\u201d WordPress, 10up <u><a href=\"https:\/\/github.com\/10up\/ElasticPress\/\">created and open sourced ElasticPress<\/a><\/u>, a plugin that acts as \u201csmart glue\u201d between Elasticsearch and your WordPress data.<\/p>\n<p>The plugin requires Elasticsearch to be properly installed and configured, so <img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"2812\" data-permalink=\"https:\/\/seattle.wordcamp.org\/2018\/limited-search-solution\/elasticpress-io-2\/\" data-orig-file=\"https:\/\/seattle.wordcamp.org\/2018\/files\/2018\/11\/ElasticPress.io_.png\" data-orig-size=\"392,172\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ElasticPress.io\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/seattle.wordcamp.org\/2018\/files\/2018\/11\/ElasticPress.io_-300x132.png\" data-large-file=\"https:\/\/seattle.wordcamp.org\/2018\/files\/2018\/11\/ElasticPress.io_.png\" class=\"alignright size-medium wp-image-2812\" src=\"https:\/\/2018.seattle.wordcamp.org\/files\/2018\/11\/ElasticPress.io_-300x132.png\" alt=\"ElasticPress.io, the complete, end-to-end search and query engine for WordPress.\" width=\"300\" height=\"132\" srcset=\"https:\/\/seattle.wordcamp.org\/2018\/files\/2018\/11\/ElasticPress.io_-300x132.png 300w, https:\/\/seattle.wordcamp.org\/2018\/files\/2018\/11\/ElasticPress.io_.png 392w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/>we felt there was still more we could do to support sites that may not have the technical staff or time to configure and maintain Elasticsearch. Technologies are also evolving rapidly\u2014Elasticsearch is iterating and we\u2019ve also been adding features and tuning search logic for the ElasticPress plugin. But some features require greater control of the server for adding modules and ensuring the security of all applications.<\/p>\n<h2>The complete, end-to-end search and query engine<\/h2>\n<p>So we created ElasticPress.io, the complete, end-to-end search and query engine for WordPress. Extending Elasticsearch technology, ElasticPress.io works with our ElasticPress plugin to seamlessly connect WordPress to a modern, high-performance solution enabling features like:<\/p>\n<ul>\n<li>Weighted full-text search, including custom fields, tags, and other metadata;<\/li>\n<li>Fuzzy matching with spelling suggestions;<\/li>\n<li>Full-text search of popular documents formats like PDFs and Word documents;<\/li>\n<li>Autocomplete recommended matches in the search bar (\u201cautosuggest\u201d);<\/li>\n<li>Searching across all sites in a multisite;<\/li>\n<li>Drag-and-drop \u201cfacet\u201d widgets for high-speed filtering of content across multiple categories or taxonomies;<\/li>\n<li>WooCommerce optimization, speeding up search results and product filtering so that customers can quickly and dependably find and buy the products they\u2019re looking for.<\/li>\n<\/ul>\n<h2>Built to be extended.<\/h2>\n<p>Designed and engineered by our team at 10up, the ElasticPress plugin is\u00a0built to be extended. WordPress developers can take advantage of its APIs, hooks, and other developer features to customize its default behavior and further tap into its potential for each project.<\/p>\n<p>The ElasticPress plugin will always be free and open, and we plan to make every feature we can available for any Elasticsearch host, for teams who are up for tuning and managing their own hosting. For everyone else, our end-to-end ElasticPress.io solution starts at $79\/month, and you can try it out for free for 14 days. Combined with our customer support, for most businesses and developers, we think this makes the benefits of ElasticPress and modern query engines accessible to a whole new part of the WordPress community.<\/p>\n<p>Stop by our table and learn more about ElasticPress.io, or to chat WordPress development and open source. You can also follow along with us on Twitter, at <u><a href=\"https:\/\/twitter.com\/elasticpressio\">@ElasticPressIO<\/a><\/u>. We can\u2019t wait to see you at WordCamp Seattle.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Written by Vasken Hauri, Vice President, Platforms &amp; Systems at ElasticPress.io, one of our sponsors. WordCamps are a great way to see the strength of the WordPress community up close. At WordCamp Seattle, you can connect with hundreds of WordPress developers, designers, and publishers. ElasticPress.io is proud to support the WordPress community as a sponsor &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/seattle.wordcamp.org\/2018\/limited-search-solution\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;A Solution to Limited Search&#8221;<\/span><\/a><\/p>\n","protected":false},"author":15618397,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1246044],"tags":[216,14],"class_list":["post-2806","post","type-post","status-publish","format-standard","hentry","category-meet-the-ground-crew","tag-plugins","tag-wordpress"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9ygka-Jg","_links":{"self":[{"href":"https:\/\/seattle.wordcamp.org\/2018\/wp-json\/wp\/v2\/posts\/2806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/seattle.wordcamp.org\/2018\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/seattle.wordcamp.org\/2018\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/seattle.wordcamp.org\/2018\/wp-json\/wp\/v2\/users\/15618397"}],"replies":[{"embeddable":true,"href":"https:\/\/seattle.wordcamp.org\/2018\/wp-json\/wp\/v2\/comments?post=2806"}],"version-history":[{"count":2,"href":"https:\/\/seattle.wordcamp.org\/2018\/wp-json\/wp\/v2\/posts\/2806\/revisions"}],"predecessor-version":[{"id":2814,"href":"https:\/\/seattle.wordcamp.org\/2018\/wp-json\/wp\/v2\/posts\/2806\/revisions\/2814"}],"wp:attachment":[{"href":"https:\/\/seattle.wordcamp.org\/2018\/wp-json\/wp\/v2\/media?parent=2806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/seattle.wordcamp.org\/2018\/wp-json\/wp\/v2\/categories?post=2806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/seattle.wordcamp.org\/2018\/wp-json\/wp\/v2\/tags?post=2806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}