<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Yusuf Ganiyu</title>
    <description>The latest articles on Forem by Yusuf Ganiyu (@airscholar).</description>
    <link>https://forem.com/airscholar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F543872%2F16694325-160a-44e1-9128-c27e44eb8add.jpg</url>
      <title>Forem: Yusuf Ganiyu</title>
      <link>https://forem.com/airscholar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/airscholar"/>
    <language>en</language>
    <item>
      <title>How to Setup Kibana and Elasticsearch on Windows</title>
      <dc:creator>Yusuf Ganiyu</dc:creator>
      <pubDate>Sat, 08 Oct 2022 16:21:42 +0000</pubDate>
      <link>https://forem.com/airscholar/how-to-setup-kibana-and-elasticsearch-on-windows-2pcc</link>
      <guid>https://forem.com/airscholar/how-to-setup-kibana-and-elasticsearch-on-windows-2pcc</guid>
      <description>&lt;p&gt;Hi guys, in this article, I will be showing you how to install, configure and connect Kibana to elasticsearch on Windows. In case you missed it, you can install elasticsearch on windows by following the steps defined in the previous article &lt;a href="https://dev.to/airscholar/setting-up-elasticsearch-on-windows-1d2l"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Downloading Kibana
&lt;/h2&gt;

&lt;p&gt;You can download Kibana from the official website &lt;a href="https://www.elastic.co/downloads/kibana"&gt;here&lt;/a&gt;. Choose windows from the dropdown and click on the download button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1xQ39GOh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2pq0yiyqelo5nh40kk9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1xQ39GOh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2pq0yiyqelo5nh40kk9l.png" alt="Downloading Kibana" width="760" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring Kibana
&lt;/h2&gt;

&lt;p&gt;Once downloaded, extract kibana and navigate into the bin directory inside kibana-8.4.3 folder then Click on kibana.bat.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gpI--rLA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jgzcyrcwwmizohqy43co.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gpI--rLA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jgzcyrcwwmizohqy43co.png" alt="the bin folder" width="353" height="214"&gt;&lt;/a&gt;&lt;br&gt;
You should see Kibana has not been configured. Click on the URL displayed in your terminal to get started.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gt_28vV6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/koim3bsofi7kdy70wvkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gt_28vV6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/koim3bsofi7kdy70wvkb.png" alt="kibana url" width="880" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you navigate to the URL, you should see something like this&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ciBnEsCN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vlu0zc25xewkofqeflq4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ciBnEsCN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vlu0zc25xewkofqeflq4.png" alt="kibana enrolment" width="880" height="538"&gt;&lt;/a&gt;&lt;br&gt;
Copy and paste the enrolment token from elasticsearch (you can get it by following the steps &lt;a href="https://dev.to/airscholar/setting-up-elasticsearch-on-windows-1d2l"&gt;here&lt;/a&gt;) &lt;/p&gt;

&lt;p&gt;If your enrolment token has expired or you get this error message while configuring with enrolment token&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lGEK-piB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/emq8ud18yp2q61j8lv9v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lGEK-piB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/emq8ud18yp2q61j8lv9v.png" alt="error configuring with enrolment token" width="483" height="633"&gt;&lt;/a&gt;&lt;br&gt;
Use the command below to create a new token then copy and paste the newly generated token into kibana.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bin/elasticsearch-create-enrollment-token -s kibana&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Configuring Elasticsearch manually
&lt;/h2&gt;

&lt;p&gt;You can click on Configure Manually&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KUcKCACU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ljiunr3ep023s6vv32d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KUcKCACU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ljiunr3ep023s6vv32d.png" alt="manual configuration" width="540" height="414"&gt;&lt;/a&gt;&lt;br&gt;
Check address, enter the username and password, check the trust certificate and click on Configure Elastic to continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2ahqaUDC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l7ww0z7r861zn0af9kyk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2ahqaUDC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l7ww0z7r861zn0af9kyk.png" alt="Manul configuration with username and password" width="567" height="783"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I strongly recommend you paste the enrolment token for smooth configuration.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;If you made it to this point, well done! You are done with the configuration. &lt;/p&gt;

&lt;p&gt;You will be asked to enter username and password (this is the username and password generated for you while setting up elasticsearch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7JscK36T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/82tnb8yykdtr3c6eioea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7JscK36T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/82tnb8yykdtr3c6eioea.png" alt="Elasticsearch authentication" width="491" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In case you forgot your elasticsearch password use the command below to reset it (you should run this command in elasticsearch bin directory)&lt;br&gt;
&lt;code&gt;elasticsearch-reset-password -u elastic&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--27UGfbys--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q6crauyxxpoampuli7nq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--27UGfbys--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q6crauyxxpoampuli7nq.png" alt="reset elastic password" width="452" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy and paste the new password and login. Voila! You are in! &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bUvT1EVz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8fd2udmjh28njapilnql.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bUvT1EVz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8fd2udmjh28njapilnql.png" alt="elasticsearch homepage" width="880" height="433"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;If you made it to this point, you have successfully connected Kibana and Elasticsearch.&lt;/p&gt;

&lt;p&gt;If you have any questions, you can drop them in the comments section or visit &lt;a href="https://discuss.elastic.co/"&gt;elastic forum&lt;/a&gt; to dicuss with other great minds.&lt;/p&gt;

&lt;p&gt;Thanks for reading :).&lt;/p&gt;

</description>
      <category>elasticsearch</category>
      <category>kibana</category>
      <category>windows</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Setup elasticsearch on Windows</title>
      <dc:creator>Yusuf Ganiyu</dc:creator>
      <pubDate>Sat, 08 Oct 2022 15:35:44 +0000</pubDate>
      <link>https://forem.com/airscholar/setting-up-elasticsearch-on-windows-1d2l</link>
      <guid>https://forem.com/airscholar/setting-up-elasticsearch-on-windows-1d2l</guid>
      <description>&lt;p&gt;Hi guys and welcome to another episode of the Elasticsearch series. In case you missed my previous series on How to Create a Full Autocomplete Search Application with Elasticsearch and NestJS, you can catch up &lt;a href="https://dev.to/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-and-nestjs-part-1-27k4"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this article, I will be showing you how to setup elastic search on Microsoft Windows. PS: This process works on Microsoft Windows 8 and above :).&lt;/p&gt;

&lt;h2&gt;
  
  
  Running Elasticsearch on Windows
&lt;/h2&gt;

&lt;p&gt;Navigate to the &lt;a href="https://www.elastic.co/downloads/elasticsearch"&gt;elasticsearch download page&lt;/a&gt; and choose windows from the dropdown, then click on the Download button (as shown below)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XbKMeygg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3cs6sun6bf4hu5gudbh0.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XbKMeygg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3cs6sun6bf4hu5gudbh0.PNG" alt="elasticsearch download page" width="880" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Extract the downloaded file and navigate into the elasticsearch-8.4.3 folder (your version may be higher, but the process remains the same!)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WlZLo55O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dd7txlil98l9j957fbk1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WlZLo55O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dd7txlil98l9j957fbk1.png" alt="extracting elasticsearch" width="257" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the bin folder, click on elasticsearch.bat&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SUjmjkaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xgj80d09weyoz71wfuc8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SUjmjkaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xgj80d09weyoz71wfuc8.png" alt="elasticsearch bin folder" width="265" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've done that, you should see something like this:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ru8nxpWE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8wzm6pa4za5aq3n44wld.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ru8nxpWE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8wzm6pa4za5aq3n44wld.png" alt="Elastic password and enrolment token" width="880" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On your browser, navigate to &lt;a href="https://localhost:9200"&gt;https://localhost:9200&lt;/a&gt;, you will be asked for username and password. By default username is &lt;strong&gt;elastic&lt;/strong&gt; and password is shown on your terminal above&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F1n0k7HX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/awak90serw2fjrlixkye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F1n0k7HX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/awak90serw2fjrlixkye.png" alt="navigating to elasticsearch on browser" width="868" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you input the right username and password, you should see this welcome page. This page shows you some information about elasticsearch installed on your computer.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ODBLi5qN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/enfpui12sop0dqydeatb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ODBLi5qN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/enfpui12sop0dqydeatb.png" alt="Welcome page" width="570" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! &lt;/p&gt;

&lt;p&gt;Elasticsearch is up and running on your windows machine! Yay!&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>elasticsearch</category>
      <category>windows</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Create a Full Autocomplete Search Application with Elasticsearch, Kibana and NestJS - The Concluding Part</title>
      <dc:creator>Yusuf Ganiyu</dc:creator>
      <pubDate>Sun, 11 Sep 2022 21:12:45 +0000</pubDate>
      <link>https://forem.com/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-kibana-and-nestjs-the-concluding-part-23lb</link>
      <guid>https://forem.com/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-kibana-and-nestjs-the-concluding-part-23lb</guid>
      <description>&lt;p&gt;Hello and welcome to the concluding part of this series. In the previous articles, we walked through the installation and configuration of Elasticsearch, Kibana as well as importing data into Elasticsearch and querying them with NestJS (in case you missed them &lt;a href="https://dev.to/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-kibana-and-nestjs-part-3-14lp"&gt;check them out here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;In this article I will be walking you through how to connect a simple react application with autocomplete feature that leverages NestJS backend with elasticsearch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up a react project
&lt;/h2&gt;

&lt;p&gt;You can setup a simple react app using this command (or checkout this &lt;a href="https://reactjs.org/docs/create-a-new-react-app.html" rel="noopener noreferrer"&gt;detailed react documentation&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npx create-react-app nest-elastic-frontend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you app is setup, open it in your favorite IDE, mine is VSCode. &lt;/p&gt;

&lt;p&gt;We will need to install &lt;code&gt;axios&lt;/code&gt; as a dependency. If you prefer &lt;code&gt;npm&lt;/code&gt; package manager, you will have to run &lt;code&gt;npm install axios&lt;/code&gt; but if you preferred yarn, &lt;code&gt;yarn add axios&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  We need to update three files
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;1. public/index.html&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You need to add bootstrap CDN. (PS: I have removed the comments to reduce the length of the file).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="utf-8" /&amp;gt;
    &amp;lt;link rel="icon" href="%PUBLIC_URL%/favicon.ico" /&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1" /&amp;gt;
    &amp;lt;meta name="theme-color" content="#000000" /&amp;gt;
    &amp;lt;meta name="description" content="Web site created using create-react-app" /&amp;gt;
    &amp;lt;link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /&amp;gt;
    &amp;lt;link rel="manifest" href="%PUBLIC_URL%/manifest.json" /&amp;gt;
    &amp;lt;link
      href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css"
      rel="stylesheet"
      id="bootstrap-css"
    /&amp;gt;
    &amp;lt;title&amp;gt;React App&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;noscript&amp;gt;You need to enable JavaScript to run this app.&amp;lt;/noscript&amp;gt;
    &amp;lt;div id="root"&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;code&gt;2. src/App.js&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import './App.css';
import axios from 'axios';
import { useState } from 'react';
const App = () =&amp;gt; {
  const [searchResponse, setSearchResponse] = useState([]);
  const [totalValue, setTotalValue] = useState();

  const handleChange = async e =&amp;gt; {
    const { data } = await axios.post('http://localhost:8000/movies/search', {
      data: {
        title: "e.target.value,"
      },
    });

    setSearchResponse(data.results);
    setTotalValue(data.total.value);
  };
  return (
    &amp;lt;div className='App'&amp;gt;
      &amp;lt;div className='container search-table'&amp;gt;
        &amp;lt;div className='search-box'&amp;gt;
          &amp;lt;div className='row'&amp;gt;
            &amp;lt;div className='col-md-3'&amp;gt;
              &amp;lt;h5&amp;gt;Search All Fields&amp;lt;/h5&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div className='col-md-9'&amp;gt;
              &amp;lt;input
                type='text'
                id='myInput'
                onChange={handleChange}
                className='form-control'
                placeholder='Search IMDB movies'&amp;gt;&amp;lt;/input&amp;gt;
            &amp;lt;/div&amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div className='search-list'&amp;gt;
          &amp;lt;h3&amp;gt;
            {totalValue ?? 0} {totalValue &amp;gt; 1 ? 'Records' : 'Record'} Found
          &amp;lt;/h3&amp;gt;
          &amp;lt;table className='table' id='myTable'&amp;gt;
            &amp;lt;thead&amp;gt;
              &amp;lt;tr&amp;gt;
                &amp;lt;th&amp;gt;Title&amp;lt;/th&amp;gt;
                &amp;lt;th&amp;gt;Overview&amp;lt;/th&amp;gt;
                &amp;lt;th&amp;gt;Revenue:Budget ($)&amp;lt;/th&amp;gt;
              &amp;lt;/tr&amp;gt;
            &amp;lt;/thead&amp;gt;
            &amp;lt;tbody&amp;gt;
              {searchResponse.map((res, idx) =&amp;gt; (
                &amp;lt;tr key={idx}&amp;gt;
                  &amp;lt;td className='title'&amp;gt;{res.title}&amp;lt;/td&amp;gt;
                  &amp;lt;td&amp;gt;
                    &amp;lt;p&amp;gt;{res.overview}&amp;lt;/p&amp;gt;
                    &amp;lt;sub&amp;gt;"{res.tagline}"&amp;lt;/sub&amp;gt;
                  &amp;lt;/td&amp;gt;
                  &amp;lt;td&amp;gt;
                    &amp;lt;p&amp;gt;
                      &amp;lt;sub&amp;gt;
                        {res.revenue.toLocaleString()}:{res.budget.toLocaleString()}
                      &amp;lt;/sub&amp;gt;
                    &amp;lt;/p&amp;gt;
                  &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
              ))}
            &amp;lt;/tbody&amp;gt;
          &amp;lt;/table&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  );
};

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;code&gt;3. Lastly, src/index.css&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
    'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

code {
  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
}

.search-table {
  padding: 10%;
  margin-top: -6%;
}
.search-box {
  background: #c1c1c1;
  border: 1px solid #ababab;
  padding: 3%;
}
.search-box input:focus {
  box-shadow: none;
  border: 2px solid #eeeeee;
}
.search-list {
  background: #fff;
  border: 1px solid #ababab;
  border-top: none;
}
.search-list h3 {
  background: #eee;
  padding: 3%;
  margin-bottom: 0%;
}

.title {
  word-wrap: normal;
  width: 200px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Running your app
&lt;/h3&gt;

&lt;p&gt;Start your react app with &lt;code&gt;yarn start&lt;/code&gt; or &lt;code&gt;npm start&lt;/code&gt; depending on your preferred package manager.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing your app
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3zzr7zojfk3sfbv9ytg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3zzr7zojfk3sfbv9ytg.png" alt="landing page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fybwd6xi4x1maj9jt4w92.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fybwd6xi4x1maj9jt4w92.png" alt="search how to"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F299jd741s2kubt45s1mt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F299jd741s2kubt45s1mt.png" alt="search hope"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;In this article, we are able to visualize the result of our backend app running on elasticsearch queries in our react application.&lt;/p&gt;

&lt;p&gt;Thanks for staying tuned!&lt;/p&gt;

&lt;p&gt;Here is the link to &lt;a href="https://github.com/airscholar/nest-elastic-frontend" rel="noopener noreferrer"&gt;the source code&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>typescript</category>
      <category>node</category>
      <category>elasticsearch</category>
    </item>
    <item>
      <title>How to Create a Full Autocomplete Search Application with Elasticsearch, Kibana and NestJS - Part 3</title>
      <dc:creator>Yusuf Ganiyu</dc:creator>
      <pubDate>Sat, 10 Sep 2022 20:27:34 +0000</pubDate>
      <link>https://forem.com/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-kibana-and-nestjs-part-3-14lp</link>
      <guid>https://forem.com/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-kibana-and-nestjs-part-3-14lp</guid>
      <description>&lt;p&gt;Hi guys, welcome to back to the Part 3 of the Elastic, Kibana and NestJS series. In the part 1 of this series, we installed and configured elasticsearch (&lt;a href="https://dev.to/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-and-nestjs-part-1-27k4"&gt;check it here if you missed it&lt;/a&gt;), in the part 2, we connected elasticsearch with Kibana and ran a few queries (&lt;a href="https://dev.to/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-and-nestjs-part-2-a6b"&gt;check here for part 2&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;In this article, we will be writing the NodeJS code that will connect and query elasticsearch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Loading data into elasticsearch
&lt;/h3&gt;

&lt;p&gt;To enable us write our code effectively, we need data loaded into our &lt;code&gt;elasticsearch&lt;/code&gt;. We will be using a sample dataset from Kaggle (&lt;a href="https://drive.google.com/file/d/1ZtcGb59EkLN0k2q4cpYS3XwYXwQdt4t_/view?usp=sharing" rel="noopener noreferrer"&gt;Download it here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Follow the FOUR steps below to load it up into elasticsearch&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open up Kibana (&lt;a href="http://localhost:5601" rel="noopener noreferrer"&gt;http://localhost:5601&lt;/a&gt;)
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp22oohs1zgm21ttsoi7v.png" alt="kibana upload"&gt;
&lt;/li&gt;
&lt;li&gt;Under &lt;code&gt;Get started by adding integrations&lt;/code&gt; click on Upload a file
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxpj9dghft6deblu9d8di.png" alt="upload file"&gt;
&lt;/li&gt;
&lt;li&gt;Click on import and enter the name of the index you want to put the data in.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffiup1jwqjq6rz6mc72sw.png" alt="index name"&gt;
&lt;/li&gt;
&lt;li&gt;Click on import (final page)
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ibd2lbquk5dbohtavg5.png" alt="import"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you made it to this point, you have successfully imported data into elasticsearch.&lt;/p&gt;

&lt;h3&gt;
  
  
  Querying for sample
&lt;/h3&gt;

&lt;p&gt;Goto DevTools (Hamburger on the top left corner of the screen &amp;gt; Scroll down to Management &amp;gt; DevTools)&lt;/p&gt;

&lt;p&gt;Run the query below (select it and click on the play button)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET tmdb_movies/_search
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see this, we are good to go!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff816hkc0q1uufuq2dr5d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff816hkc0q1uufuq2dr5d.png" alt="querying elasticsearch"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Now, Let's dive into coding, shall we 😊?&lt;/p&gt;

&lt;h2&gt;
  
  
  NestJs
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;NestJS is a progressive Node. js framework that helps build server-side applications. Nest extends Node. js frameworks like Express or Fastify adding modular organization and a wide range of other libraries to take care of repetitive tasks. It's open-source, uses TypeScript, and is a very versatile Node.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Creating a NestJs Application
&lt;/h3&gt;

&lt;p&gt;Run the command below to install nestcli and create a new NestJs Application (in the article, the name of the app will be nest-elastic).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm i -g @nestjs/cli
$ nest new nest-elastic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will be asked to select a package manager, you can select npm, yarn or pnpm. I will be selecting yarn (you can choose any other one you want 😉). Your project will be setup and we should be ready to code!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdrlzyevtugrac4kuonyf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdrlzyevtugrac4kuonyf.png" alt="project setup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding elasticsearch to your app
&lt;/h3&gt;

&lt;p&gt;Run the command below to add elasticsearch to your &lt;code&gt;nest-elastic&lt;/code&gt; and other dependencies.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn add @elastic/elasticsearch @nestjs/elasticsearch @nestjs/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In your root folder add your &lt;code&gt;.env&lt;/code&gt; file with the following contents&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ELASTICSEARCH_NODE=https://localhost:9200
ELASTICSEARCH_USERNAME=elastic
ELASTICSEARCH_PASSWORD=elasticPasswordGoesHere
ELASTICSEARCH_MAX_RETRIES=10
ELASTICSEARCH_REQ_TIMEOUT=50000
ELASTICSEARCH_INDEX=tmdb_movies
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's create a separate module that handles only search using elasticsearch. A simple shortcut is to use the command below (you are welcome to do it manually, if you want too)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nest g resource search
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmngiiuklyjb6jwfpcfo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmngiiuklyjb6jwfpcfo.png" alt="added search module"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Update the &lt;code&gt;search.module.ts&lt;/code&gt; to have the content below&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Module } from '@nestjs/common';
import { SearchService } from './search.service';
import { SearchController } from './search.controller';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { ElasticsearchModule } from '@nestjs/elasticsearch';

@Module({
  imports: [
    ConfigModule,
    ElasticsearchModule.registerAsync({
      imports: [ConfigModule],
      useFactory: async (configService: ConfigService) =&amp;gt; ({
        node: configService.get('ELASTICSEARCH_NODE'),
        auth: {
          username: configService.get('ELASTICSEARCH_USERNAME'),
          password: configService.get('ELASTICSEARCH_PASSWORD'),
        },
        maxRetries: configService.get('ELASTICSEARCH_MAX_RETRIES'),
        requestTimeout: configService.get('ELASTICSEARCH_REQ_TIMEOUT'),
      }),
      inject: [ConfigService],
    }),
  ],
  controllers: [SearchController],
  providers: [SearchService],
  exports: [SearchService],
})
export class SearchModule {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update &lt;code&gt;search.service.ts&lt;/code&gt; with the content below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { ConfigService } from '@nestjs/config';
import { Injectable } from '@nestjs/common';
import { ElasticsearchService } from '@nestjs/elasticsearch';

type dataResponse = {
  UnitPrice: number;
  Description: string;
  Quantity: number;
  Country: string;
  InvoiceNo: string;
  InvoiceDate: Date;
  CustomerID: number;
  StockCode: string;
};

@Injectable()
export class SearchService {
  constructor(
    private readonly esService: ElasticsearchService,
    private readonly configService: ConfigService,
  ) {}

  async search(search: {key: string}) {
    let results = new Set();
    const response = await this.esService.search({
      index: this.configService.get('ELASTICSEARCH_INDEX'),
      body: {
        size: 50,
        query: {
          match_phrase: search
        },
      },
    });
    const hits = response.hits.hits;
    hits.map((item) =&amp;gt; {
      results.add(item._source as dataResponse);
    });

    return { results: Array.from(results), total: response.hits.total };
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Now, let's add movies modules&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nest g resource movies
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update &lt;code&gt;movies.controller.ts&lt;/code&gt; with the content below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { SearchService } from './../search/search.service';
import { Body, Controller, Post } from '@nestjs/common';

@Controller('movies')
export class MoviesController {
  constructor(private readonly searchService: SearchService) {}

  @Post('search')
  async search(@Body() body) {
    return await this.searchService.search(body.data);
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then &lt;code&gt;movies.module.ts&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { SearchModule } from './../search/search.module';
import { Module } from '@nestjs/common';
import { MoviesService } from './movies.service';
import { MoviesController } from './movies.controller';

@Module({
  imports: [SearchModule],
  controllers: [MoviesController],
  providers: [MoviesService],
})
export class MoviesModule {}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, update &lt;code&gt;app.module.ts&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { MoviesModule } from './movies/movies.module';
import { ConfigModule } from '@nestjs/config';
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { SearchModule } from './search/search.module';

@Module({
  imports: [MoviesModule, ConfigModule.forRoot(), SearchModule],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your &lt;code&gt;package.json&lt;/code&gt; should look like this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name": "nest-elastic",
  "version": "0.0.1",
  "description": "",
  "author": "Yusuf Ganiyu",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "prebuild": "rimraf dist",
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
  "dependencies": {
    "@elastic/elasticsearch": "^8.4.0",
    "@nestjs/common": "^9.0.0",
    "@nestjs/config": "^2.2.0",
    "@nestjs/core": "^9.0.0",
    "@nestjs/elasticsearch": "^9.0.0",
    "@nestjs/mapped-types": "*",
    "@nestjs/platform-express": "^9.0.0",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.2",
    "rxjs": "^7.2.0"
  },
  "devDependencies": {
    "@nestjs/cli": "^9.0.0",
    "@nestjs/schematics": "^9.0.0",
    "@nestjs/testing": "^9.0.0",
    "@types/express": "^4.17.13",
    "@types/jest": "28.1.4",
    "@types/node": "^16.0.0",
    "@types/supertest": "^2.0.11",
    "@typescript-eslint/eslint-plugin": "^5.0.0",
    "@typescript-eslint/parser": "^5.0.0",
    "eslint": "^8.0.1",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-prettier": "^4.0.0",
    "jest": "28.1.2",
    "prettier": "^2.3.2",
    "source-map-support": "^0.5.20",
    "supertest": "^6.1.3",
    "ts-jest": "28.0.5",
    "ts-loader": "^9.2.3",
    "ts-node": "^10.0.0",
    "tsconfig-paths": "4.0.0",
    "typescript": "^4.3.5"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Running the app
&lt;/h3&gt;

&lt;p&gt;You can fire up the app in dev environment using &lt;code&gt;yarn start:dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdn43lg536kmx80sjrzzh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdn43lg536kmx80sjrzzh.png" alt="running terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxc9oqjbnv1a2w6n1d5u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxc9oqjbnv1a2w6n1d5u.png" alt="postman -1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56j43kxz1gg52vchioti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56j43kxz1gg52vchioti.png" alt="postman -2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can access the full &lt;a href="https://github.com/airscholar/nest-elastic-backend" rel="noopener noreferrer"&gt;source code here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;In this article, we are able to import data into elastic using kibana and also connect our NestJs backend app to the leverage the power of elasticsearch.&lt;/p&gt;

&lt;p&gt;In the next article, we will be building a simple frontend to query and visualize results from elasticsearch in realtime.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>nestjs</category>
      <category>elasticsearch</category>
    </item>
    <item>
      <title>How to Create a Full Autocomplete Search Application with Elasticsearch and NestJs - Part 2</title>
      <dc:creator>Yusuf Ganiyu</dc:creator>
      <pubDate>Thu, 08 Sep 2022 22:05:56 +0000</pubDate>
      <link>https://forem.com/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-and-nestjs-part-2-a6b</link>
      <guid>https://forem.com/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-and-nestjs-part-2-a6b</guid>
      <description>&lt;p&gt;Hello and welcome back to the part 2 of this series, in the previous article, I showed you how to setup and configure elasticsearch on your PC, in case you missed it, no worries, &lt;a href="https://dev.to/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-and-nestjs-part-1-27k4"&gt;check it out here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this article, I will be walking you through how to setup and connect to elasticsearch through Kibana and NestJs application to create a backend server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hold up, what is Kibana?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Kibana is a source-available data visualization dashboard software for Elasticsearch, whose free and open source successor in OpenSearch is OpenSearch Dashboards. &lt;a href="https://en.wikipedia.org/wiki/Kibana" rel="noopener noreferrer"&gt;Read more&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  How does Kibana help us in this case you may ask?
&lt;/h3&gt;

&lt;p&gt;Kibana is a great visualization tool that helps us with our elasticsearch queries and manipulation. It is part of B.E.L.K (Beats, Elasticsearch, Logstash and Kibana) stack. In case you don't know much about it, follow along and you will be just fine! (A separate article on Kibana can be written as an addendum to this series if you want, let me know in the comment section!)&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up and Configuring Kibana
&lt;/h2&gt;

&lt;p&gt;In order to download Kibana, goto &lt;a href="https://www.elastic.co/downloads/kibana" rel="noopener noreferrer"&gt;Kibana Download Page&lt;/a&gt;, click on the download button. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1texwo3igkju6kc9w9h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1texwo3igkju6kc9w9h.png" alt="Download Kibana"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After downloading, extract the zip file using this command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ tar -xzvf kibana-8.4.1-darwin-aarch64.tar.gz
$ cd kibana-8.4.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are two ways to configure and connect Kibana to elasticsearch, one way is to manually input the required keys into &lt;code&gt;kibana.yml&lt;/code&gt; (in &lt;code&gt;config/kibana.yml&lt;/code&gt;) or run Kibana and configure on the UI. I'm choosing the latter 😉!&lt;/p&gt;

&lt;p&gt;Run kibana using this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bin/kibana
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When starting Kibana for the first time, you will be presented with this screen&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgpclxmf3nxc01qfxmqa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgpclxmf3nxc01qfxmqa.png" alt="kibana enrolment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two ways to tackle this;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use the elastic enrollment token (usually generated on your terminal when starting elastic for the first time) see below;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcptvhlgfd37c9vcmthv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcptvhlgfd37c9vcmthv.png" alt="elastic enrolment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy and paste the enrollment token above to Kibana and click &lt;code&gt;Configure Elastic&lt;/code&gt;. You will be fine&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Manually configure Kibana with elastic using the elastic URL. Click on check address and click &lt;code&gt;Configure elastic&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwzn0bmf4oemcmajxthfd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwzn0bmf4oemcmajxthfd.png" alt="elastic url"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter &lt;code&gt;kibana_system&lt;/code&gt; password generated. Or click forgot password (if you can not recall the password), paste the command below to your terminal to reset the password.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bin/elasticsearch-reset-password --username kibana_system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will be asked to enter a verification code, check your terminal (where you are running kibana to retrieve it)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjbtxt7cy88x5tonkuew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjbtxt7cy88x5tonkuew.png" alt="verification code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! You are all set up.&lt;/p&gt;

&lt;p&gt;Enter your elastic username and password to login to kibana and you are in!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fn2m9g0dtduz9clu39g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fn2m9g0dtduz9clu39g.png" alt="elastic login"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Querying elastic using Kibana
&lt;/h3&gt;

&lt;p&gt;Let's run a sample query to test our connection, shall we?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on the hamburger (three lines on the top left corner of your screen)&lt;/li&gt;
&lt;li&gt;Scroll down to the bottom of the page&lt;/li&gt;
&lt;li&gt;Click on &lt;code&gt;Dev tools&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You should see something like this:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyx4782kqi405smvxttf6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyx4782kqi405smvxttf6.png" alt="dev tools"&gt;&lt;/a&gt;&lt;br&gt;
On the left pane is where queries are written, the right pane is where the outputs are presented.&lt;/p&gt;

&lt;p&gt;Ensure you click on any part of the query and select the play button.&lt;/p&gt;

&lt;p&gt;The output of the query will be presented on the right pane.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;In this article, we are able to connect successfully to elasticsearch and run sample queries using Kibana. &lt;/p&gt;

&lt;p&gt;In the next article, I will show you how to Import data to elastic using Kibana and walk you through how to use the imported data in your NestJS application.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>elasticsearch</category>
      <category>react</category>
    </item>
    <item>
      <title>How to Create a Full Autocomplete Search Application with Elasticsearch and NestJS - Part 1</title>
      <dc:creator>Yusuf Ganiyu</dc:creator>
      <pubDate>Tue, 06 Sep 2022 15:59:38 +0000</pubDate>
      <link>https://forem.com/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-and-nestjs-part-1-27k4</link>
      <guid>https://forem.com/airscholar/how-to-create-a-full-autocomplete-search-application-with-elasticsearch-and-nestjs-part-1-27k4</guid>
      <description>&lt;p&gt;Elasticsearch is a distributed, RESTful search and analytics engine that can handle an expanding range of use cases. It offers a full-text search engine with a multitenant capability, an HTTP web interface, and schema-free JSON documents, all with simple installation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. &lt;a href="https://en.wikipedia.org/wiki/Elasticsearch" rel="noopener noreferrer"&gt;Read more&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this article, I will be walking you through how to setup elasticsearch on your PC.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to setup, install and configure Elasticsearch for Mac
&lt;/h2&gt;

&lt;p&gt;In order to download Elasticsearch, goto &lt;a href="https://www.elastic.co/downloads/elasticsearch" rel="noopener noreferrer"&gt;Elasticsearch Download Page&lt;/a&gt;, select the respective operating system and click on the download button as shown below: &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqnj18emgdltydkri1f0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqnj18emgdltydkri1f0n.png" alt="Download elasticsearch"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After downloading, extract the compressed file using the command below&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-xzvf&lt;/span&gt; elasticsearch-8.4.1-darwin-aarch64.tar.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configuring Elasticsearch
&lt;/h3&gt;

&lt;p&gt;After extracting elasticsearch, depending on your use case, you may want to configure elasticsearch to suit you. You can take a look at the config file using the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ vi elasticsearch-8.4.1/config/elasticsearch.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cluster: You can have multiple nodes in your cluster, in order to do this, you need to ensure that the cluster name on your nodes matches.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# -------------------------------- Cluster ----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: air-elastic
#
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node: This is an identifier for the individual nodes in your cluster&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# -------------------------------- Node ----------------------------------
#
# Use a descriptive name for your cluster:
#
node.name: airscholar-node
#
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For other configurations, check &lt;code&gt;elasticsearch.yml&lt;/code&gt; to fine tune the configs to suit your use case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting up Elasticsearch
&lt;/h2&gt;

&lt;p&gt;In order to start up elasticsearch engine use the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;bin/elasticsearch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When starting up &lt;code&gt;elasticsearch&lt;/code&gt; for the first time, you will be presented with a password that needs to be changed&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijqm5s9a50w3a3euu1kb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijqm5s9a50w3a3euu1kb.png" alt="elastic-password-change"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Changing your password for the first time
&lt;/h3&gt;

&lt;p&gt;You should change your password after starting up the elasticsearch for the first time, of course, you can do that using this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bin/elasticsearch-reset-password -u elastic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;NOTE: ENSURE YOU KEEP YOUR ELASTIC PASSWORD SAFE, IT WILL BE REQUIRED IN ORDER TO CONNECT TO ELASTICSEARCH&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Testing Elasticsearch
&lt;/h3&gt;

&lt;p&gt;In your browser, goto &lt;code&gt;https://localhost:9200&lt;/code&gt; or the specified hostname and port in your &lt;code&gt;elasticonfig.yml&lt;/code&gt;. &lt;br&gt;
You will be asked for &lt;code&gt;username&lt;/code&gt; (elastic) and &lt;code&gt;password&lt;/code&gt; (the password you changed to when starting elasticsearch for the first time)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g7jgkawkm5lr9oepzgj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g7jgkawkm5lr9oepzgj.png" alt="elastic-authentication"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should see something like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name" : "airscholar-node",
  "cluster_name" : "air-elastic",
  "cluster_uuid" : "7g3LmMYFRmyxTyR6ZI-b7A",
  "version" : {
    "number" : "8.4.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "2bd229c8e56650b42e40992322a76e7914258f0c",
    "build_date" : "2022-08-26T12:11:43.232597118Z",
    "build_snapshot" : false,
    "lucene_version" : "9.3.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you have any challenge setting up elasticsearch, feel free to drop a comment, I will try to respond. You can also check &lt;a href="https://www.elastic.co/guide/index.html" rel="noopener noreferrer"&gt;official elasticsearch documentation&lt;/a&gt; for a more detailed information about elasticsearch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Congratulations our elasticsearch guru, you made it! &lt;/p&gt;

&lt;p&gt;Now that elasticsearch is up and running, your Elasticsearch node should be completely functional. The process is pretty much the same if you have multiple nodes and you do not have to worry about the nodes in your cluster because elasticsearch fully supports automated routing and load balancing.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;In the next article, I will walk you through how to setup and connect your NestJs application with Elasticsearch. Stay tuned!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>elasticsearch</category>
      <category>react</category>
    </item>
  </channel>
</rss>
