{"id":15700,"date":"2017-01-13T16:15:17","date_gmt":"2017-01-13T14:15:17","guid":{"rendered":"http:\/\/www.webcodegeeks.com\/?p=15700"},"modified":"2017-12-19T12:19:13","modified_gmt":"2017-12-19T10:19:13","slug":"docker-elasticsearch-tutorial","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/","title":{"rendered":"Docker Elasticsearch Tutorial"},"content":{"rendered":"<p>Elasticsearch is a document-oriented, schema-free, distributed search engine based on Apache Lucene. This powerful tool that allows to index a huge data volume and, after, perform complex searches on it, including full-text searches. This tutorial will show how to use it with Docker.<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n[ulp id=&#8217;OCKUMTbC259tpbxG&#8217;]<br \/>\n&nbsp;<br \/>\nFor this tutorial, Linux Mint 18 and Docker version 1.12.1 have been used.<\/p>\n<div class=\"tip\"><strong>Tip<\/strong><br \/>\nYou may skip installation and configuration, and jump directly to the <a href=\"#section_2\"><strong>beginning of the tutorial<\/strong><\/a> below.<\/div>\n<h2>1. Installation<\/h2>\n<p><strong>Note<\/strong>: Docker requires a 64-bit system with a kernel version equal or higher to 3.10.<\/p>\n<p>We can install Docker simply via <code>apt-get<\/code>, without the need of adding any repository, just installing the <code>docker.io<\/code> package. We will also need cURL for this tutorial.<\/p>\n<pre class=\"brush:bash\">sudo apt-get update\r\nsudo apt-get install docker.io curl<\/pre>\n<p>For more details, you can follow the <a href=\"https:\/\/www.webcodegeeks.com\/devops\/install-docker-ubuntu-tutorial\/\">Install Docker on Ubuntu Tutorial<\/a>.<\/p>\n<h3>1.1. Increasing the virtual memory<\/h3>\n<p>In order to use Elasticsearch, we have to increase the virtual memory. For doing so, we have to execute the following command:<\/p>\n<pre class=\"brush:bash\">sudo sysctl -w vm.max_map_count=262144<\/pre>\n<p><strong>Note<\/strong>: the virtual memory changes will be lost after reboot. To change it permanently, we have to modify the <code class=\"literal\">\/etc\/sysctl.conf<\/code> file.<\/p>\n<h2 id=\"section_2\">2. Using the official image<\/h2>\n<p>We can find the official Elasticsearch Docker repository on <a href=\"https:\/\/hub.docker.com\/_\/elasticsearch\/\">DockerHub<\/a>. We can pull the latest version:<\/p>\n<pre class=\"brush:bash\">docker pull elasticsearch<\/pre>\n<h3>2.1. Creating the container<\/h3>\n<p>For creating an Elasticsearch container, we have to bind the container 9200 port to the host:<\/p>\n<pre class=\"brush:bash\">docker run -p 9200:9200 --name=elasticsearch1 elasticsearch<\/pre>\n<p><strong>Note<\/strong>: we usually will want to run the container in detached mode; for that, add the <code>-d<\/code> option.<\/p>\n<p>Once the container is running, we should be able to access it, in this case, at <code>http:\/\/localhost:9200<\/code>, which will return a JSON object:<\/p>\n<pre class=\"brush:javascript\">{\r\n  \"name\" : \"nZBbX-z\",\r\n  \"cluster_name\" : \"elasticsearch\",\r\n  \"cluster_uuid\" : \"kysJT3MbR5iBOHKPb6VlTA\",\r\n  \"version\" : {\r\n    \"number\" : \"5.1.1\",\r\n    \"build_hash\" : \"5395e21\",\r\n    \"build_date\" : \"2016-12-06T12:36:15.409Z\",\r\n    \"build_snapshot\" : false,\r\n    \"lucene_version\" : \"6.3.0\"\r\n  },\r\n  \"tagline\" : \"You Know, for Search\"\r\n}\r\n<\/pre>\n<p>So, that&#8217;s it! We now have a Elasticsearch node running within that container. Let&#8217;s make a little test before going further with its configuration within the container.<\/p>\n<p>Let&#8217;s start indexing a simple document like the following:<\/p>\n<pre class=\"brush:javascript\">{\r\n\u00a0\u00a0\u00a0 \"message\": \"Hello world!\"\r\n}<\/pre>\n<p>With cURL, we would have to execute:<\/p>\n<pre class=\"brush:bash\">curl -XPOST localhost:9200\/mails\/message\/1 -d '\r\n{\r\n\u00a0\u00a0\u00a0 \"message\": \"Hello world!\"\r\n}\r\n'<\/pre>\n<p>If everything worked, we would have received a response like:<\/p>\n<pre class=\"brush:javascript\">{\"_index\":\"mails\",\"_type\":\"message\",\"_id\":\"1\",\"_version\":1,\"result\":\"created\",\"_shards\":{\"total\":2,\"successful\":1,\"failed\":0},\"created\":true}<\/pre>\n<p>Now, we can <code>GET<\/code> that document, either accessing the URL with a browser, or with cURL:<\/p>\n<pre class=\"brush:bash\">curl -XGET localhost:9200\/mails\/message\/1<\/pre>\n<h2>3. Installing plugins<\/h2>\n<p>Elasticsearch has many plugins available to extend the default functionality. In this section we will see how we can install them. But, as a Docker user, you should already know that <strong>every change we make within a container will be lost if the container is removed<\/strong>, because the instance where we have made the changes is deleted.<\/p>\n<p>Being that told, for installing Elasticsearch plugins being ran within a Docker container, we first need to get the command line of the container:<\/p>\n<pre class=\"brush:bash\">docker exec -it elasticsearch1 \/bin\/bash<\/pre>\n<p><strong>Note<\/strong>: we execute the shell as superuser since root permissions are needed for plugins installation.<\/p>\n<p>Now we have to execute the Elasticsearch binary for installing plugins. The binaries are located in the <code>bin<\/code> directory of the Elasticsearch installation directory, which, by default, is <code>\/usr\/share\/elasticsearch<\/code>.<\/p>\n<p>So, being inside the container, we would just have to execute:<\/p>\n<pre class=\"brush:bash\">\/usr\/share\/elasticsearch\/bin\/elasticsearch-plugin install &lt;plugin-name&gt;<\/pre>\n<p>For example, for installing the <a href=\"https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/plugins\/current\/discovery-ec2.html\">EC2 Discovery Plugin<\/a>, we would execute:<\/p>\n<pre class=\"brush:bash\">\/usr\/share\/elasticsearch\/bin\/elasticsearch-plugin install discovery-ec2<\/pre>\n<h2>4. Using Dockerfiles<\/h2>\n<p>In most of the cases, we will want to customize our Elasticsearch instance, installing plugins for instance, as we did in the previous section. In this cases, writing a Dockerfile is the recommended practice, instead of executing manually the commands within the container.<\/p>\n<p>A Dockerfile for doing so, would be just the following:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>Dockerfile<\/em><\/span><\/p>\n<pre class=\"brush:bash\">FROM elasticsearch\r\n\r\n# We use '-b' ('--batch') option for automatic confirmation.\r\nRUN \/usr\/share\/elasticsearch\/bin\/elasticsearch-plugin install -b discovery-ec2<\/pre>\n<p>Now we have to build the image:<\/p>\n<pre class=\"brush:bash\">docker build -t myelasticsearch . # Path to the Dockerfile.<\/pre>\n<p>And we could create a container from the image:<\/p>\n<pre class=\"brush:bash\">docker run -p 9200:9200 --name=elasticsearch2 myelasticsearch<\/pre>\n<h2>5. Using data containers<\/h2>\n<p>A typical scenario for this cases is to use containers just for the data that is going to be used by the application. <strong>This allows to keep the data layer untouched, regardless the changes we make within the running service<\/strong>.<\/p>\n<p>For this, we will use the following directory structure and files:<\/p>\n<pre class=\"brush:bash\">.\r\n\u251c\u2500\u2500 elasticsearch-data\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 Dockerfile\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 elasticsearch.yml\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 log4j2.properties\r\n\u2514\u2500\u2500 elasticsearch-master\r\n\u00a0\u00a0\u00a0 \u2514\u2500\u2500 Dockerfile<\/pre>\n<p>These are the config files (just default values):<\/p>\n<p><span style=\"text-decoration: underline;\"><em>elasticsearch.yml<\/em><\/span><\/p>\n<pre class=\"brush:bash\">network.host: 0.0.0.0\r\n\r\n# this value is required because we set \"network.host\"\r\n# be sure to modify it appropriately for a production cluster deployment\r\ndiscovery.zen.minimum_master_nodes: 1<\/pre>\n<p><span style=\"text-decoration: underline;\"><em>log4j2.properties<\/em><\/span><\/p>\n<pre class=\"brush:bash\">appender.console.type = Console\r\nappender.console.name = console\r\nappender.console.layout.type = PatternLayout\r\nappender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n\r\n\r\nrootLogger.level = info\r\nrootLogger.appenderRef.console.ref = console<\/pre>\n<p>And, the Dockerfile for the data volume, basing on an Ubuntu image:<\/p>\n<p><span style=\"text-decoration: underline;\"><em>elasticsearch-data\/Dockerfile<\/em><\/span><\/p>\n<pre class=\"brush:bash\"># Dockerfile for Elasticsearch data volume.\r\n\r\nFROM ubuntu\r\n\r\n# We need to create the Elasticsearch user.\r\nRUN useradd -d \"\/home\/elasticsearch\" -m -s \/bin\/bash elasticsearch\r\n\r\nVOLUME \/var\/log\/elasticsearch\r\nVOLUME \/usr\/share\/elasticsearch\/config\r\nVOLUME \/usr\/share\/elasticsearch\/config\/scripts\r\nVOLUME \/usr\/share\/elasticsearch\/data\r\nVOLUME \/usr\/share\/elasticsearch\/plugins\r\n\r\n# Required config files.\r\nADD .\/elasticsearch.yml \/usr\/share\/elasticsearch\/config\/elasticsearch.yml\r\nADD .\/log4j2.properties \/usr\/share\/elasticsearch\/config\/log4j2.properties\r\n\r\nUSER elasticsearch\r\n\r\nCMD [\"echo\", \"Data volume for Elasticsearch\"]<\/pre>\n<p>Now, we have to build the image and create the container, just as any other container:<\/p>\n<pre class=\"brush:bash\">docker build -t myelasticsearchdata elasticsearch-data\/.\r\ndocker run --name=elasticsearch-data myelasticsearchdata<\/pre>\n<p>Note that data containers don&#8217;t have to be running.<\/p>\n<p>Having the data container ready, we need the &#8220;main&#8221; container, the one running the service. We don&#8217;t need to modify the Dockerfile for the Elasticsearch master container, nor rebuild the image; but we have to create another container indicating that it has to use the data volume:<\/p>\n<pre class=\"brush:bash\">docker run -p 9200:9200 --volumes-from=elasticsearch-data --name=elasticsearch-master -d myelasticsearch<\/pre>\n<p>With this, <strong>we have completely isolated the data layer from the application one<\/strong>. We can test indexing some data:<\/p>\n<pre class=\"brush:bash\">curl -XPOST localhost:9200\/mails\/message\/1 -d '\r\n{\r\n\u00a0\u00a0\u00a0 \"message\": \"Elasticsearch with data volumes\"\r\n}<\/pre>\n<p>Deleting the master container:<\/p>\n<pre class=\"brush:bash\">docker stop elasticsearch-master\r\ndocker rm elasticsearch-master<\/pre>\n<p>And creating another instance of the Elasticsearch image, with the data volume:<\/p>\n<pre class=\"brush:bash\">docker run -p 9200:9200 --volumes-from=elasticsearch-data --name=elasticsearch-master2 myelasticsearch<\/pre>\n<p>Now, if we GET the data, we will see that it actually exists:<\/p>\n<pre class=\"brush:bash\">curl -XGET localhost:9200\/mails\/message\/1<\/pre>\n<h2>6. Summary<\/h2>\n<p>This tutorial has shown how to put running an Elasticsearch instance with Docker, from the fastest way, just pulling the official image and creating a container; to creating our own Dockerfiles, seeing also how to use data volumes for data persistence.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Elasticsearch is a document-oriented, schema-free, distributed search engine based on Apache Lucene. This powerful tool that allows to index a huge data volume and, after, perform complex searches on it, including full-text searches. This tutorial will show how to use it with Docker. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ulp id=&#8217;OCKUMTbC259tpbxG&#8217;] &nbsp; For &hellip;<\/p>\n","protected":false},"author":160,"featured_media":10356,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[217],"class_list":["post-15700","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-docker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Docker Elasticsearch Tutorial - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"Elasticsearch is a document-oriented, schema-free, distributed search engine based on Apache Lucene. This powerful tool that allows to index a huge data\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker Elasticsearch Tutorial - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"Elasticsearch is a document-oriented, schema-free, distributed search engine based on Apache Lucene. This powerful tool that allows to index a huge data\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-13T14:15:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-12-19T10:19:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Toni\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Toni\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/\"},\"author\":{\"name\":\"Toni\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/54a7be647b0b871cff41cbf3d2a95966\"},\"headline\":\"Docker Elasticsearch Tutorial\",\"datePublished\":\"2017-01-13T14:15:17+00:00\",\"dateModified\":\"2017-12-19T10:19:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/\"},\"wordCount\":797,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"keywords\":[\"Docker\"],\"articleSection\":[\"DevOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/\",\"name\":\"Docker Elasticsearch Tutorial - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"datePublished\":\"2017-01-13T14:15:17+00:00\",\"dateModified\":\"2017-12-19T10:19:13+00:00\",\"description\":\"Elasticsearch is a document-oriented, schema-free, distributed search engine based on Apache Lucene. This powerful tool that allows to index a huge data\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/devops\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Docker Elasticsearch Tutorial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/54a7be647b0b871cff41cbf3d2a95966\",\"name\":\"Toni\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/21c1661474c78b4757355b8beef9ab1d14f490ee3a3e67392f4e618d36643d4c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/21c1661474c78b4757355b8beef9ab1d14f490ee3a3e67392f4e618d36643d4c?s=96&d=mm&r=g\",\"caption\":\"Toni\"},\"url\":\"https:\/\/www.webcodegeeks.com\/author\/julen-pardo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Docker Elasticsearch Tutorial - Web Code Geeks - 2026","description":"Elasticsearch is a document-oriented, schema-free, distributed search engine based on Apache Lucene. This powerful tool that allows to index a huge data","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/","og_locale":"en_US","og_type":"article","og_title":"Docker Elasticsearch Tutorial - Web Code Geeks - 2026","og_description":"Elasticsearch is a document-oriented, schema-free, distributed search engine based on Apache Lucene. This powerful tool that allows to index a huge data","og_url":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2017-01-13T14:15:17+00:00","article_modified_time":"2017-12-19T10:19:13+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","type":"image\/jpeg"}],"author":"Toni","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Toni","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/"},"author":{"name":"Toni","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/54a7be647b0b871cff41cbf3d2a95966"},"headline":"Docker Elasticsearch Tutorial","datePublished":"2017-01-13T14:15:17+00:00","dateModified":"2017-12-19T10:19:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/"},"wordCount":797,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","keywords":["Docker"],"articleSection":["DevOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/","url":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/","name":"Docker Elasticsearch Tutorial - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","datePublished":"2017-01-13T14:15:17+00:00","dateModified":"2017-12-19T10:19:13+00:00","description":"Elasticsearch is a document-oriented, schema-free, distributed search engine based on Apache Lucene. This powerful tool that allows to index a huge data","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/devops\/docker-elasticsearch-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"DevOps","item":"https:\/\/www.webcodegeeks.com\/category\/devops\/"},{"@type":"ListItem","position":3,"name":"Docker Elasticsearch Tutorial"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/54a7be647b0b871cff41cbf3d2a95966","name":"Toni","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/21c1661474c78b4757355b8beef9ab1d14f490ee3a3e67392f4e618d36643d4c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/21c1661474c78b4757355b8beef9ab1d14f490ee3a3e67392f4e618d36643d4c?s=96&d=mm&r=g","caption":"Toni"},"url":"https:\/\/www.webcodegeeks.com\/author\/julen-pardo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/15700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/160"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=15700"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/15700\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/10356"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=15700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=15700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=15700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}