Sysadmins of the North
Share now!

Install Elasticsearch on CentOS 6.7

How to install Elasticsearch on CentOS 6.7. Elasticsearch is a highly scalable open-source full-text search and analytics engine. It allows you to store, search, and analyze big volumes of data quickly and in near real time. In this article we’ll go over the steps to install Elasticsearch on CentOS 6.7.

Elasticsearch on CentOS

Elasticsearch is a search server based on Lucene. It is developed in Java and is released as open source under the terms of the Apache License. It is generally used as the underlying engine/technology that powers applications that have complex search features and requirements.

Nowadays you see more and more WooCommerce shops improving their searches with Elasticsearch. There is a great article about this on Pressjitsu, in which they utilize the 10up/ElasticPress WordPress plugin.

Elasticsearch supports RESTful operations. This means that you can use HTTP methods (GET, POST, PUT, DELETE, etc.) in combination with an HTTP URI (/collection/entry) to manipulate your data. The intuitive RESTful approach is both developer and user friendly.

To install Elasticsearch on CentOS, we only need a few commands. I installed Elasticsearch a little while ago, therefore the version used in this article (1.7.2) is older than the current stable: 2.1.1.

Install Java
Since Elasticsearch is developed in Java, we need to have Java installed:

sudo yum install java-1.7.0-openjdk.x86_64

Download Elasticsearch RPM


For Elasticsearch 2.1.1:


See the repository guide for how to add and install Elasticsearch through the repository.

Yum install the package

sudo yum install elasticsearch-1.7.2.noarch.rpm

For Elasticsearch 2.1.1:

sudo yum install elasticsearch-2.1.1.rpm

Activate Elasticsearch as a service

sudo chkconfig --add elasticsearch
sudo chkconfig elasticsearch on

Start Elasticsearch

sudo service elasticsearch start

Configuring Elasticsearch

Installing Elasticsearch wasn’t that hard and now we need to configure some of its parameters. Per default, you find its configuration in /etc/elasticsearch/, and elasticsearch.yml is where you configure the server settings.

This may interest you:   Bash: Grep through a large number of files - argument list too long

I installed Elasticsearch once, on a single server as a test. Therefore I left almost everything untouched.



with the IP address you want your Elasticsearch server to listen on, localhost, or for example. Note that this parameter sets both the bind_host and publish_host configuration settings.

Restart Elasticsearch after making the changes:

sudo service elasticsearch restart

Testing and using Elasticsearch

Testing your newly installed Elasticsearch server is as easy as providing an HTTP GET verb to your server:

curl -X GET 'http://localhost:9200'
  "status" : 200,
  "name" : "Perfection",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "1.7.2",
    "build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec",
    "build_timestamp" : "2015-09-14T09:49:53Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.4"
  "tagline" : "You Know, for Search"

Everything works 🙂 and now you can create an index using the HTTP PUT verb (straight from the documentation):

curl -XPUT 'http://localhost:9200/twitter/' -d '{
    "settings" : {
        "index" : {
            "number_of_shards" : 3,
            "number_of_replicas" : 2

Elasticsearch then confirms the creation:


The GET result is:

curl -X GET 'http://localhost:9200'/twitter/
  "twitter" : { 
    "aliases" : {},
    "mappings" : {},
    "settings" : {
      "index" : {
        "creation_date" : "1451379831681",
        "uuid" : "hHXeCbp-TcGwqa1TSqif5w",
        "number_of_replicas" : "2",
        "number_of_shards" : "3",
        "version" : {
          "created" : "1070299"
    "warmers" : {}

Elasticsearch in WordPress

A number of WordPress plugins for Elasticsearch exist, the earlier mentioned 10up/ElasticPress and also Fantastic ElasticSearch and WP ElasticSearch. There is a Tuts+ article that addresses the Fantastic ElasticSearch plugin.

This may interest you:   Installing Debian GNU/Linux 7.0 (Wheezy) on HP EliteBook 8570w

This all eases adding Elasticsearch to your WordPress website.

Securing Elasticsearch

for shared hosting, multiple websites and indexes…

One of my main concerns is: security in Elasticsearch. I work for a hosting company offering shared web hosting, and nearly everything we set up needs to be able to be used by more than one client. I haven’t found a way to secure Elasticsearch for more than one client / website / index yet, have you?

Per default, Elasticsearch creates an index for every index name it receives, and since all WordPress Elasticsearch plugins automatically create an index called “wordpress”, you understand my concerns. So one important security option is to disable the automatic creation of indices.

The automatic, or dynamic creation of indices is controlled by the index.mapper.dynamic parameter in elasticsearch.yml. When set to true (its default), dynamic creation is allowed, so we need to set this to false. Open up /etc/elasticsearch/elasticsearch.yml in your favorite editor and change

index.mapper.dynamic: true


index.mapper.dynamic: false

An index is no longer automatically created, meaning you have to create it manually using the above PUT HTTP verb, for example: curl -XPUT '[index_name]/'.
However, for as far as I know, you need to recreate the entire WordPress database scheme in Elasticsearch manually… Whoops. See the post Mapping WordPress Posts to Elasticsearch on for more information on doing that.

Another important security measurement in Elasticsearch is HTTP basic authentication.

This may interest you:   Huge increase in WordPress xmlrpc.php POST requests

Elasticsearch 6.3.2 on CentOS 7.5 with Java-1.8.0-openjdk

Update 18-08-2018: In a nutshell we can use the following commands to install Elasticsearch 6.3.2 on CentOS 7.5 with Java-1.8.0-openjdk. Most of the other information in this article remains the same.

sudo yum install java-1.8.0-openjdk.x86_64
sudo rpm -import
sudo vim /etc/yum.repos.d/elasticsearch.repo

	name=Elasticsearch repository for 6.x packages

sudo yum install elasticsearch
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service

Conclusion running Elasticsearch on CentOS

Honestly, Elasticsearch is still new to me. I haven’t gone through the entire configuration thoroughly and really need to search for, and read-up on, securing Elasticsearch for shared web hosting. The Elasticsearch installation on CentOS is quite simple and straightforward.

In this article I used an older version of CentOS (6.7), and soon I’ll redo these steps on installing a current version Elasticsearch on CentOS 7 and Java 8.

During testing with one index for one website, it speeds up WordPress searches drastically. Which is great! WordPress plugins also offer “and”,”or” options to the search, allowing you to search for a word in multiple categories except some other categories.

If you have some advice on securing and using Elasticsearch in the kind of environment I mentioned, please post your information, knowhow and links / articles as a comment below. I’d really appreciate that. I think HTTP basic authentication, elasticsearch-jetty and Elasticsearch behind a nginx reverse proxy are pretty good options.

You may also want to install Varnish Cache on CentOS, to further optimize your website content delivery.

buy me a coffee
Buy Me A Coffee

About the Author Jan Reilink

My name is Jan. I am not a hacker, coder, developer, programmer or guru. I am merely a system administrator, doing my daily thing at Vevida in the Netherlands. With over 15 years of experience, my specialties include Windows Server, IIS, Linux (CentOS, Debian), security, PHP, WordPress, websites & optimization. Want to support me and donate? Use this link:

follow me on:

Thank you!

Leave a Comment:

Add Your Reply
Skip to content