نصب Elasticsearch

نحوه نصب و پیکربندی Elasticsearch روی سرور ابری

Elasticsearch یک موتور جستجو متن باز و RESTful است. این موتور جستجو می تواند داده های HTTP و داده های غیر ساختار یافته JSON را دریافت و با ساختاری پیچیده تر ذخیره نماید. با نصب Elasticsearch می توانید به Full-text، تحلیل لاگ، تحلیل تجاری و هوش امنیتی دسترسی داشته باشید. Elasticsearch به عنوان هسته Elastic Stack با ذخیره داده های شما برای جستجوی سریع تر، کاملا دقیق و قدرتمند عمل می کند. با Elasticsearch، می‌توانید انواع مختلفی از جستجوها را انجام داده و ترکیب کنید و برای استفاده از آن دستتان کاملا باز است. در این آموزش، ما به شما نشان خواهیم داد که چگونه به سرعت و به راحتی Elasticsearch را بر روی یک Cloud Server نصب و پیکربندی کنید.

نصب Elasticsearch

هنگامی که سرور ابری شما راه اندازی شد، با استفاده از SSH به آن متصل شوید و قطعه کد زیر را وارد کنید. پس از آن، می توانید با افزودن Elasticsearch عملیات نصب را آغاز کنید:

wget -qO - https://artifacts.elastic.co/gpg-key-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

در مرحله بعد، فهرست‌های مخزن را بروز رسانی کنید تا منبع جدید را در بر بگیرد.

sudo apt update

سپس Elasticsearch را با دستور زیر نصب کنید.

sudo apt install elasticsearch

هنگامی که نصب انجام شد، می توانید Elasticsearch را طبق نیازهای خود کانفیگ کرده و به مرحله بعد بروید:

پیکربندی Elasticsearch

پس از نصب Elasticsearch، بسته به مورد استفاده و نیازهای خود می توانید تنظیمات را شخصی سازی کنید. به این منظور فایل elasticsearch.yml را در یک ویرایشگر متن باز کنید.

sudo nano /etc/elasticsearch/elasticsearch.yml

ابتدا باید خوشه و گره‌ای را که پیکربندی می‌کنید نام ببرید. یک گره تنها زمانی می تواند به یک خوشه بپیوندد که cluster.name را با تمام گره های دیگر در خوشه به اشتراک بگذارد. سعی کنید نام خوشه را متناسب هدف خوشه انتخاب کنید.

# -------------------------------- Cluster ----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: example-cluster
#

در الستیک سرچ node.name به عنوان یک شناسه با خوانایی بالا برای گره های خوشه Elasticsearch استفاده می شود. به طور پیش فرض، node.name روی نام میزبان سرور تنظیم شده است، اما می توان آن را به صورت دستی پیکربندی کرد.

# --------------------------------- Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: node-1
#

به طور پیش فرض، Elasticsearch فقط از طریق localhost یا آدرس IP 127.0.0.1 قابل دسترسی است. اگر می خواهید آن را از سرور دیگر یا رایانه محلی خود کوئری کنید، باید network.host را روی یک آدرس IP مناسب تنظیم کنید.

# -------------------------------- Network ----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
#network.host: 192.168.0.1
#

همچنین می‌توانید پورت پیش‌فرض 9200 را با توجه به ترجیحات خود تغییر دهید. اگر یک پورت سفارشی تنظیم می کنید، به یاد داشته باشید که فایروال خود را مطابق با آن پیکربندی کنید.

# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#
#http.port: 9200
#
# For more information, consult the network module documentation.

پس از انجام تنظیمات، فایل را ذخیره کرده و از ویرایشگر خارج شوید.

سپس سرویس Elasticsearch را راه اندازی کنید و آن را فعال کنید تا در هنگام بوت راه اندازی شود.

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

راه اندازی ممکن است چند ثانیه طول بکشد، اما باید بدون مشکل یا خروجی کامل شود. پس از آن می توانید با دستور زیر وضعیت سرویس را بررسی کنید.

sudo systemctl status elasticsearch

با اجرای سرویس Elasticsearch، قبل از شروع به آزمایش جستجو، پیکربندی فایروال را ادامه دهید.

کانفیگ رول های فایروال (Configuring firewall rules)

اگر Elasticsearch را در یک شبکه عمومی فعال کرده اید، باید دسترسی به پورت جستجوی HTTP 9200 را فقط به آدرس های IP خود محدود کنید.

بخش <your-ip-address> را در دستور زیر با IP عمومی خود یا IP عمومی سرور دیگری جایگزین کنید.

sudo ufw allow from <your-ip-address> to any port 9200

دستور بالا را تکرار کنید تا بتوانید به سایر آدرس های IP دسترسی داشته باشید. همچنین مطمئن شوید که به اتصالات SSH نیز دسترسی دارید و از سرور بلاک نشده اید.

sudo ufw allow ssh

سپس فایروال را فعال کنید و با بررسی وضعیت فایروال، قوانین فعال شده را بررسی کنید.

sudo ufw enable
sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
9200                       ALLOW       <your-ip-address>
22                         ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)

با پیکربندی فایروال، می‌توانید مطمئن باشید که تلاش های دسترسی غیر مجاز انجام نمی‌شوند و برای اطمینان از آن می توانید خودتان Elasticsearch را آزمایش کنید.

تست اتصال

ساده ترین راه برای کوئری زدن از سرور Elasticsearch استفاده از curl یا ابزار کامند لاین مشابه است. به طور مثال دستور زیر به شما امکان می دهد جزئیات اتصالات سرور را دریافت کنید. توجه داشته باشید که لوکال هاست فقط از داخل خود سرور ابری قابل دسترسی است. اگر می‌خواهید از منبع خارجی Elasticsearch را کوئری کنید، Localhost را با IP عمومی Cloud Server جایگزین کنید.

curl -X GET 'http://localhost:9200'
{ 
  "name" : "elastic.example.com"، 
  "cluster_name" : "elasticsearch"، 
  "cluster_uuid" : "NCY3941lRtWECJTI_fASlw", 
  "version" : { 
    "number" : "7.12.1", 
    "build_flavor" : "default" "، 
    "build_type" : "deb"، 
    "build_hash" : "3186837139b9c6b6d23c3200870651f10d3343b7", 
    " 
    build_date" : "2021-04-20T20:56:39.043": "2021-04-20T20:56:39.043 
    " , 
    "minimum_wire_compatibility_version" : "6.8.0"، 
    "minimal_index_compatibility_version" : "6.0.0-beta1" 
  }, 
  "tagline" : "You Know, for Search" 
}

همچنین می توانید با استفاده از ایندکس ها کوئری های بیشتری را اجرا کنید.

curl -X GET 'http://localhost:9200/_nodes/node-1/name?pretty'

به پارامتر pretty? که در انتهای عبارت آمده است توجه کنید. این پارامتر برای فرمت کردن خروجی استفاده می شود و خواندن آن را در خط فرمان آسان تر می کند. بدون استفاده از آن، تمام خروجی ها در یک خط چاپ می شوند.

اجرای کوئری در پایگاه داده

اکنون که یک گره Elasticsearch در حال راه اندازی و اجرا داریم، اجازه دهید داده هایی را وارد کنیم که می توانیم برای آزمایش آن استفاده کنیم. با استفاده از دستور زیر یک فهرست جدید با یک پیام پیوست ایجاد کنید.

curl -X POST -H 'Content-Type: application/json' 'localhost:9200/example/helloworld/1?pretty' -d '{ "message": "Hello world!" }'

برای تایید باید خروجی مشابه زیر دریافت کنید.

{ 
  "_index" : "example"، 
  "_type" : "helloworld"، 
  "_id" : "1"، 
  "_version" : 1، 
  "result" : "created"، 
  "_shards" : { 
    "total" : 2, 
    "successful" : 1، 
    "failed" : 0 
  }، 
  "_seq_no" : 0، 
  "_primary_term" : 1 
}

با استفاده از دستور زیر، مستقیماً برای ورودی ای که به تازگی ایجاد کرده ایم، ایندکس را پرس و جو کنید.

curl -X GET -H 'Content-Type: application/json' 'localhost:9200/example/helloworld/1?pretty'
{ 
  "_index" : "example", 
  "_type" : "helloworld"، 
  "_id" : "1"، 
  "_version" : 1، 
  "_seq_no" : 0، 
  "_primary_term" : 1، 
  "found" : true، 
  " _source" : { 
    "message" : "Hello World!" 
  } 
}

با استفاده از کوئری زیر، می توانید داده های مشابه را در پایگاه داده جستجو کنید. دستور زیر برای خوانایی بین چند خط تقسیم می شود، می توانید تمام قطعه کد را کپی کنید.

curl -X POST -H 'Content-Type: application/json' 'localhost:9200/_search?pretty' -d' 
{ 
  "query": { 
    "match": { 
      "_type": "helloworld" 
    } 
  } 
}'
{
  "took" : 25,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "example",
        "_type" : "helloworld",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "message" : "Hello world!"
        }
      }
    ]
  }
}

اگر می‌خواهید داده‌های نمونه را حذف کنید، می‌توانید فهرستی که در آن ذخیره شده است را با دستور زیر حذف کنید.

curl -X DELETE 'localhost:9200/example'

Elasticsearch عالی کار می کند و شما باید ایده ای از کوئری های اساسی داشته باشید. برای درک بهتر جستجو و فهرست‌ها، می‌توانید دستورات بیشتری را آزمایش کنید. با کمک Elasticsearch  می توانید بیش از میلیون ها رویداد را در کسری از ثانیه مدیریت کنید.

ما در این مقاله سعی کردیم به سادگی هر چه تمام تر نحوه نصب و پیکربندی اولیه الستیک سرچ را بر روی سرور ابری انجام دهیم و تعدادی از دستورات و کوئری های مختلفی که می توان روی آن اجرا کرد را با هم بررسی نمودیم.

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *