WordPress is one of the most popular software on the planet with more than 70 million websites on the internet. It’s one of the best content management software and it’s evolving in every version update.

It works on the concepts of MySQL hence it is slow with searches. performing WordPress ElasticSearch Integration allows for improving the flaws WordPress has and making it more efficient.

ElasticSearch is distributed, fast, RESTful Search engine software meant for search and analytics. It is based on Apache Lucene and written in Java. It is one of the fastest search engines and can be combined with various applications.

This article gives a comprehensive guide on setting up WordPress ElasticSearch Integration.

What is ElasticSearch?

Wordpress elasticsearch: elasticsearch
Image Source: Medium

Elasticsearch is a distributed, open-source search and analytics engine. It is built on Apache Lucene and developed in Java language. It started as a scalable version of the Lucene open-source search framework then added the ability to horizontally scale the Lucene indices.

Elasticsearch allows you to store, search, and analyze huge volumes of data quickly and in near real-time and give back answers in milliseconds. It’s able to achieve fast search responses because instead of searching the text directly, it searches an index.

It uses a structure based on documents instead of tables and schemas and comes with extensive REST APIs for storing and searching the data. At its core, you can think of Elasticsearch as a server that can process JSON requests and give you back JSON data. 

Elasticsearch’s primary use cases and provide examples of how companies are using it today.

Primary Use Cases

  • Application search: ElasticSearch allows for an easier search for applications that rely heavily on a search platform for the access, retrieval, and reporting of data.
  • Website search: Websites that store a lot of content find Elasticsearch a very useful tool for effective and accurate searches. It’s no surprise that Elasticsearch is steadily gaining ground in the site search domain sphere. 
  • Enterprise search: Elasticsearch allows enterprise-wide search that includes document search, E-commerce product search, blog search, people search, and any form of search you can think of. In fact, it has steadily penetrated and replaced the search solutions of most of the popular websites we use on a daily basis. From a more enterprise-specific perspective, Elasticsearch is used to great success in company intranets.
  • Logging and log analytics: As we’ve discussed, Elasticsearch is commonly used for ingesting and analyzing log data in near-real-time and in a scalable manner. It also provides important operational insights on log metrics to drive actions. 
  • Infrastructure metrics and container monitoring: Many companies use the ELK stack to analyze various metrics. This may involve gathering data across several performance parameters that vary by use case.
  • Security analytics: Another major analytics application of Elasticsearch is security analysis. Access logs and similar logs concerning system security can be analyzed with the ELK stack, providing a more complete picture of what’s going on across your systems in real time.
  • Business analytics: Many of the built-in features available within the ELK Stack make it a good option as a business analytics tool. However, there is a steep learning curve for implementing this product and in most organizations. This is especially true in cases where companies have multiple data sources besides Elasticsearch–since Kibana only works with Elasticsearch data.
  • A good alternative is Knowi, an analytics platform that natively integrates with Elasticsearch and allows even non-technical business users to create visualizations and perform analytics on Elasticsearch data without prior knowledge or expertise of the ELK Stack.

Related: Demystify the intricacies of ingest pipelines in Elasticsearch. Discover how Elasticsearch’s powerful tools can transform your data ingestion process, allowing you to preprocess and enrich your data seamlessly before indexing it into Elasticsearch in our comprehensive guide on how to ingest data to Elasticsearch.

What is WordPress?

Wordpress elasticsearch: wordpress logo
Image Source: Inmotion hosting

WordPress is a free, open-source website creation platform. On a more technical level, WordPress is a content management system (CMS) written in PHP that uses a MySQL database. In non-geek speak, WordPress is the easiest and most powerful blogging and website builder in existence today.

Features of WordPress

As a website-building platform and CMS, WordPress boasts an impressive feature set. Here are just a few of the many features of WordPress.

  • SEO: Search Engine Optimization (SEO) begins at a technical level and WordPress delivers an exceptional code base for SEO. SEO allows your website’s content to be found via common search engines such as Google or Bing. Check out these free WordPress SEO training videos to learn more.
  • Speed: WordPress is a lean website framework that is constantly striving to remove code “bloat” that slows down the loading speed of a website.
  • Mobile-friendly: Most WordPress themes are now mobile-friendly or responsive out-of-the-box.
  • Media file library: WordPress includes a built-in media library where you can upload and embed media files such as images or videos into your pages or posts. You can even perform basic edits to your images within WordPress.
  • Easy-to-use user interface: WordPress is very easy to use with no complicated settings. If you can use a WordPress processor, you can use WordPress. WordPress also has a focus on accessibility.
  • Custom menus: WordPress makes it easy to create navigation menus with links to your pages or custom links.
  • Built-in blog: Adding a blog to your website is as simple as publishing a post.

Related:

WordPress ElasticSearch Integration

WordPress has an inbuilt search engine that can be used as a widget but it works on concepts of MySQL. MySQL is efficient for storing data but when it comes it retrieval and working with analytics it is not suitable.

It also slow when a large number of queries are run simultaneously. ElasticSearch works on the concepts of Rest API. It is a Search engine software meant for search and analytics. It is based on Apache Lucene and written in Java hence providing efficiency.

Performing WordPress ElasticSearch Integration allows overcoming all the disadvantages of using a general WordPress Search Engine.

WordPress ElasticSearch is a 4 step process

WordPress ElasticSearch: Install and Configure WP-CLI

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

or

wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

NOTE: Using wget, if you get an error about the SSL certificate mismatch between www.github.com and raw.githubusercontent.com domains, you can skip the certificate check to download the file with:

wget –no-check-certificate https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
  • Then test WP-CLI directly with PHP with this command:
php wp-cli.phar –info
  • You should see output similar to:

PHP binary:

/opt/cpanel/ea-php70/root/usr/bin/php 
PHP version:  7.0.26 php.ini

used:

 /opt/cpanel/ea-php70/root/etc/php.ini

WP-CLI root dir:

phar://wp-cli.phar WP-CLI packages
WP-CLI global config:  WP-CLI project config:   WP-CLI version: 0.24.1
  • Next, you’ll need to make the WP-CLI file executable and move it to your path:
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp
  • Now you can simply use wp at the command line to access WP-CLI:
wp –info

Setup Bash Tab-to-Complete for WP-CLI

A great time-saving feature of command-line interfaces is using tab completion to quickly type in commands. You can add the ability to use tab completion for WP-CLI by setting it up in your local ~/.bash_profile file.

  1. Download the WP-CLI tab-completion file to your server.
curl -O https://raw.githubusercontent.com/wp-cli/wp-cli/master/utils/wp-completion.bash 

or

wget https://raw.githubusercontent.com/wp-cli/wp-cli/master/utils/wp-completion.bash
  • Move the WP-CLI tab-completion file to your home directory:
  • Now edit your ~/.bash_profile file to include the WP-CLI tab-completion file:
vi ~/.bash_profile
  • Add this line to the bottom of your ~/.bash_profile file:
source ~/wp-completion.bash
  • Now save this file
  • Back at the command line, make sure to source your ~/.bash_profile file by running this command:
source ~/.bash_profile
  • Now just type wp at the prompt, and hit Tab twice to see all the tab completions you just setup:
exampl3@server [/home/exampl3/public_html]# wp
cache  comment  eval  help  menu  plugin  role  shell  super-admin  transient
cap  core  eval-file  import  network  post  scaffold  sidebar  term  user  cli
db  export  media  option  rewrite  search-replace  site  theme  widget

Now that you have installed WP-CLI you can begin using the command line to manage your WordPress website(s).

WordPress ElasticSearch: Install Elasticsearch

The easiest way to install Elasticsearch is from their repositories instead of the OS default repos. This is still an easier option compared to a manual installation and ensures you’ll be able to easily keep Elasticsearch updated.

Install Elasticsearch on CentOS

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 
  • Create an elasticsearch.repo file in /etc/yum.repos.d/ using Nano, VIM, or Emacs:
  • Add the following to the file:
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
  • Save changes.
  • Now install Elasticsearch:
sudo yum install --enablerepo=elasticsearch elasticsearch 

The configured repository is disabled by default to prevent upgrading Elasticsearch when upgrading the rest of the system. Therefore, installation and upgrade commands must explicitly enable the repo.Open port 9200 in your firewall: Firewalld, UFW, CSF, etc. Or if you need to use another port, edit the Elasticsearch YAML file.Check that Elasticsearch is running on an open port:

curl -X GET localhost:9200 

If you receive curl: (7) Failed connect to localhost:9200; Connection refused, check your Firewalld settings again.

Install Elasticsearch on Debian

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
  • Install apt-transport-https to access packages with an SSL (HTTPS) connection:
sudo apt-get install apt-transport-https
  • Add the Elastic repo to a new elastic-7.x.list file:
  • Install Elasticsearch:
sudo apt-get update && sudo apt-get install elasticsearch 
Simplify Data Analysis with Hevo’s No-code Data Pipeline

Hevo Data, a No-code Data Pipeline helps to load data from any data source such as Databases, SaaS applications, Cloud Storage, SDKs, and Streaming Services and simplifies the ETL process. It supports 150+ data sources (including 50+ free data sources) and is a 3-step process by just selecting the data source, providing valid credentials, and choosing the destination.

Hevo not only loads the data onto the desired Data Warehouse/destination but also enriches the data and transforms it into an analysis-ready form without having to write a single line of code.

GET STARTED WITH HEVO FOR FREE

Its completely automated pipeline offers data to be delivered in real-time without any loss from source to destination.

Its fault-tolerant and scalable architecture ensures that the data is handled in a secure, consistent manner with zero data loss and supports different forms of data. The solutions provided are consistent and work with different BI tools as well.

Check out why Hevo is the Best:

  • Secure: Hevo has a fault-tolerant architecture that ensures that the data is handled in a secure, consistent manner with zero data loss.
  • Schema Management: Hevo takes away the tedious task of schema management & automatically detects the schema of incoming data and maps it to the destination schema.
  • Minimal Learning: Hevo, with its simple and interactive UI, is extremely simple for new customers to work on and perform operations.
  • Hevo Is Built To Scale: As the number of sources and the volume of your data grows, Hevo scales horizontally, handling millions of records per minute with very little latency.
  • Incremental Data Load: Hevo allows the transfer of data that has been modified in real-time. This ensures efficient utilization of bandwidth on both ends.
  • Live Support: The Hevo team is available round the clock to extend exceptional support to its customers through chat, email, and support calls.
  • Live Monitoring: Hevo allows you to monitor the data flow and check where your data is at a particular point in time.
SIGN UP HERE FOR A 14-DAY FREE TRIAL

Setting Elasticsearch as a System Service

  • Use the following command to start Elasticsearch now:
systemctl start elasticsearch
  • Use the following command to enable Elasticsearch to automatically start upon system reboot:
systemctl enable elasticsearch
  • Use the following command to check for any issues related to starting or enabling Elasticsearch:
systemctl status elasticsearch

WordPress ElasticSearch: Configure Elasticsearch

  • To make changes to Elasticsearch, edit the Elasticsearch YAML file:
nano /etc/elasticsearch/elasticsearch.yml
  • By default, Elasticsearch uses port 9200 or the next available port between 9200-9300. If you need to specify a different Elasticsearch port, change the following line and remove the # at the beginning:
#http.port: 9200
  • Ensure Elasticsearch is running on an open port, changing localhost to your domain or other hostnames as needed:
curl -X GET localhost:9200
  • To find your server IP in the command line, use
hostname -i
  • If this Elasticsearch installation will join a node cluster, change the hostname to a server IP address or server hostname and remove the # at the beginning of the following line:
#network.host: 192.168.0.1
  • You can also create descriptive node name for easier navigation among cluster setups by modifying the following line:
#node.name: node-1

WordPress ElasticSearch: Create WordPress Elasticsearch Connection

WordPress users that work with WP_Query objects can use the Elasticsearch search engine with ElasticPress in WordPress.

First, you will need to edit your wp-config.php file to include the location of your Elasticsearch server. In this example, Elasticsearch is on the same server as our WordPress site, so we add the following:

define( ‘EP_HOST’, ‘https://127.0.0.1:9200’ );

Next, you will need to install the ElasticPress plugin. The ElasticPress plugin is available both within the WordPress plugin directory or within GitHub. If you want the most updated version, we recommend GitHub.

Of course, Elasticsearch isn’t doing us any good if we don’t have any data populated within it. To begin, log into your server via SSH and execute one of the following:

For single WordPress sites

wp elasticpress index –setup

For cross-site search on multisite

wp elasticpress index –setup –network-wide

ElasticPress is now running on your site and all searches are now WP_Query is now handling searches with WordPress Elasticsearch instead of running MySQL queries for your data. For more information on ElasticPress, check out the ElasticPress GitHub page.

Conclusion

This article gave a comprehensive guide on ElasticSearch and WordPress. It also provided steps to configure WordPress ElasticSearch integration.

While WordPress ElasticSearch integration is efficient, it is a hectic task to set up the proper environment. To make things easier, Hevo comes into the picture. Hevo Data is a No-code Data Pipeline and has awesome 150+ pre-built Integrations that you can choose from.

visit our website to explore hevo

Hevo can help you Integrate your data from numerous sources like WordPress and load them into a destination to analyze real-time data with a BI tool such as Tableau. It will make your life easier and data migration hassle-free. It is user-friendly, reliable, and secure.

SIGN UP for a 14-day free trial and see the difference!

Share your experience of learning about WordPress ElasticSearch integration in the comments section below.


mm
Former Research Analyst, Hevo Data

Arsalan is a data science enthusiast with a keen interest towards data analysis and architecture and is interested in writing highly technical content. He has experience writing around 100 articles on various topics related to data industry.

No-code Data Pipeline For Your Data Warehouse