Topics

On this page

Last updated on Dec 18, 2020

Setup ElasticSearch with ElasticPress

Elastic Search already has docker image available. So lets use that Docker image to setup elastic search with WordPress.

Step 1: Install docker

https://docs.docker.com/engine/installation/linux/ubuntulinux

Step 2: Create an Elastic Search container

docker run -d -v "/var/esdata":/usr/share/elasticsearch/data elasticsearch

Repo url: https://hub.docker.com/_/elasticsearch/

Step 3: Note docker container ID

^_^[root@localhost:~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                NAMES
763fd2ca5532        elasticsearch       "/docker-entrypoint.s"   About a minute ago   Up About a minute   9200/tcp, 9300/tcp   silly_bohr

Step 4: Note container’s Private IP

^_^[root@localhost:~]# docker inspect {container id}

You will get output something like below:

...
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
...

Step 5: Start Elastic Search Service

First lets get a shell access to our docker container

docker exec -t -i 763fd2ca5532 /bin/bash

on second step check elastic search services status and start if not running.

root@763fd2ca5532:~# service elasticsearch status
elasticsearch is not running ... failed!

root@763fd2ca5532:~# service elasticsearch start
Starting Elasticsearch Server:sysctl: setting key "vm.max_map_count": Read-only file system.

root@763fd2ca5532:~# service elasticsearch status
elasticsearch is running.

Now lets get out of docker shell:

Check elastic search status from outside.

^_^[root@localhost:~]# curl http://{Container_IP}:9200
{
"name" : "Bandit",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.3",
"build_hash" : "218bdf10790eef486ff2c41a3df5cfa32dadcfde",
"build_timestamp" : "2016-05-17T15:40:04Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}

Step 6 : Install ElasticPress plugin on wordpress

Install this plugin on your wordpress site – https://github.com/10up/ElasticPress

Add something like this on your wp-config.php. Replace {container_ip} with your docker ip.

define( 'EP_HOST', 'http://{container_ip}:9200' );

Make sure your elasticpress backened setting is same as below :

Selection_053

Run indexing for first time from web setting or use below wp-cli command :

wp elasticpress index

Check Elastic Search STATUS:

curl http://{container_ip}:9200/_stats