우분투에 ElasticSearch 설치하고 실행해보기

0

최근 개발하고 있는 플랫폼에서 검색엔진을 구축하다가 기술적인 한계를 느껴 ElasticSearch를 공부해보기로 마음먹었다. 또한 Logstash와 Kibana도 함께 공부하여 ELK 스택을 탄탄히 익혀보고 싶다. 이글은 우분투에 엘라스틱서치를 설치하고 간단히 실행해보는 방법을 적은 글이다. 나같은 사람들이 이글을 보고 많은 도움을 얻었으면 좋겠다.

우선 우분투 터미널에

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
입력후 비밀번호 입력

sudo apt-get install apt-transport-https
입력 후 비밀번호 입력

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-get update && sudo apt-get install elasticsearch
마지막으로 위 명령어를 입력하면 ElastcSearch가 설치된다.

이제 ElastcSearch의 설정 파일을 변경하면 되는데 터미널에
sudo vi /etc/elasticsearch/elasticsearch.yml
를 입력하여 파일을 vi에디터로 편집해야한다.

그전에 기초적인 vi 명령어를 알고 하자
i: 명령모드에서 입력모드로 변경 (입력모드에서 글자 입력이 가능하다)
esc: 입력모드에서 명령모드로 변경
x:한글자 삭제 (명령모드에서 해야한다)
d:한 행 삭제 (명령모드에서 해야한다)

마지막 종료할때는 명령모드에서 :를 누르면 마지막행으로 가게 되는데 이때 w를 입력하고 엔터를 누르면 저장이고, q를 입력하고 엔터를 누르면 저장하지않고 종료이다. wq는 저장후 종료이다.

sudo vi /etc/elasticsearch/elasticsearch.yml
바로 위 명령어를 입력해 파일속으로 들어가게 되면 방향키를 이용해 커서를 아래쪽으로 내려서
#node.name: node-1 부분에서 맨앞의 #을 x버튼을 통해 지운다.
이후 #network.host: 192.168.0.1 부분에서 맨앞의 #을 지우고 뒤 아이피를 0.0.0.0으로
변경한다.
또 이후 #discovery.seed_hosts: ["host1", "host2"]에서 맨앞의 #을 지우고 ["127.0.0.1"]로 변경한다.
마지막으로 #cluster.initail_master_nodes: ["node-1", "node-2"]로 이동해 맨앞 #을 지우고 node-1만 남긴다.
이후 :버튼을 누르고 wq를 입력한뒤 엔터를 치면 끝이다.


조금이라도 오타가 나면 실패한다. 따라서 집중해서 하도록하자...!

이제 ElasticSearch를 실행해볼 시간이다.

터미널에
sudo /bin/systemctl daemon-reload
입력

sudo /bin/systemctl enable elasticsearch.service
입력

마지막으로
sudo /bin/systemctl start elasticsearch.service
입력, 이제 우분투가 켜질때마다 elasticsearch가 자동적으로 실행될 것이다.

이제
curl -XGET 127.0.0.1:9200
를 입력하고 엘라스틱서치가 잘 다운로드 되었는지 보자(엘라스틱 서치가 실행되기까지는 1~2분 걸리기 때문에 위 명령어를 입력하고 Fail이 떠도 조금만 기다려보고 다시 명령어를 입력하면 된다.)

{
"name" : "node-1",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "hoSY-S1XR2muNjmmFhk3LA",
"version" : {
"number" : "7.17.6",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "f65e9d338dc1d07b642e14a27f338990148ee5b6",
"build_date" : "2022-08-23T11:08:48.893373482Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

위와 같은 텍스트가 나오면 성공이다! 이제 엘라스틱서치의 다운로드는 완료했고 검색에 사용할
데이터가 필요하다. 따라서 윌리엄 셰익스피어의 전집을 다운로드하겠다. 하지만 그전에

우선
wget http://media.sundog-soft.com/es7/shakes-mapping.json
을 입력

이후
curl -H "Content-Type: application/json" -XPUT 127.0.0.1:9200/shakespeare --data-binary @shakes-mapping.json
입력하여 엘라스틱서치가 셰익스피어 데이터를 해석할 수 있도록 매핑 타입 데이터를 다운로드 받고 엘라스틱서치에 삽입해주었다.

이제 진짜 셰익스피어 전집 데이터를 다운받고 삽입하겠다.

wget http://media.sundog-soft.com/es7/shakespeare_7.0.json
입력하여 json데이터 다운로드

curl -H "Content-Type: application/json" -XPOST '127.0.0.1:9200/shakespeare/_bulk' --data-binary @shakespeare_7.0.json
을 입력하여 엘라스틱서치에 데이터 삽입(이 작업은 시간이 조금 걸린다)

이후
curl -H "Content-Type: application/json" -XGET '127.0.0.1:9200/shakespeare/_search?pretty' -d '
를 입력한뒤 엔터를 눌러보자 (이 작업은 셰익스피어 인덱스에 json 요청을 넣어 검색 쿼리를 실행하는 것이다, 결과를 깔끔한 형식으로 돌려받을 수 있게 된다. 우리는 to be or not to be를 검색할 것이다)

엔터를 눌렀다면 이후
{
"query" : {
"match_phrase" : {
"text_entry" : "to be or not to be"
}
}
}
'
를 입력한다 이후 제대로 응답이 돌아오는 것을 확인할 수 있다. "to be or not to be"이란 문구를 말한 주인공은 햄릿이고 전체대사는 "to be or not to be: that is the question"이란것을 응답을 통해 확인할 수 있다.

profile
Software engineer who is interested in server development, computer vision, and soccer

0개의 댓글