DEV/ElasticSearch & Lucene

ElasticSearch Tutorial | 01. 무작정 시작하기

행운개발자 2023. 10. 28. 10:52
728x90

1. Easticsearch 7.* 다운로드하기

ES 7.* 버전이 아무런 설정을 하지 않아도 127.0.0.1:9200 포트로 접근이 가능합니다.

프로젝트 루트로 이동해서 tar 파일을 다운로드 받습니다.

지금은 ES를 standalone으로도 구성해보고, 뒤에서 cluster로도 구성해볼겠습니다

cd {YOUR_PROJECT_ROOT}/standalone
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.0-darwin-x86_64.tar.gz

압축을 해제합니다

tar -xvf elasticsearch-7.15.0-darwin-x86_64.tar.gz

2. Easticsearch 실행하기 :: tar 파일로 실행하기

bin 디렉토리 아래의 elasticsearch을 사용해서 실행합니다

./bin/elasticsearch

데몬 프로세스로 시작하려면 -d -p PID 옵션을 추가합니다

./bin/elasticsearch -d -p PID

-d 옵션은 데몬으로 실행되도록 설정해주고 -p 옵션은 PID 파일을 생성해줍니다.

cat PID
// 57553%

PID 파일에는 ps -ef로 찾을 수 있는 프로세스 ID와 동일한 값이 들어있습니다.

PID 57553

실행된 프로세스는 아래의 명령어로 중단시킬 수 있습니다

pkill -F PID

2.1. warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME

ES는 JAVA_HOME 대신에 ES_JAVA_HOME를 사용합니다. ~/.zshrc에 아래의 내용을 추가하면 WARNING 문구가 출력되지 않습니다.

// ~/.zshrc
ES_JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
export ES_JAVA_HOME

3. Elasticsearch 정상 동작 확인하기

브라우저나 curl로 ES의 기본 포트 9200에 접속해봅니다

curl http://127.0.0.1:9200

 

접속하면 아래와 같은 ES의 정보를 알 수 있습니다.

{
  "name" : "air.local",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "3-FBScMgSrqXjZDL-CG-8g",
  "version" : {
    "number" : "7.15.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "79d65f6e357953a5b3cbcc5e2c7c21073d89aa29",
    "build_date" : "2021-09-16T03:05:29.143308416Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

4. Easticsearch 실행하기 :: docker로 실행해보기

tar 대신 docker로 ES를 실행하는 방법입니다.

 

ES의 이미지를 다운로드 받습니다.  

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.0

 

다운로드 받은 이미지 목록을 확인합니다. 

// docker images
hwanseok@air elasticsearch-7.15.0 % docker images
REPOSITORY                                      TAG       IMAGE ID       CREATED        SIZE
<none>                                          <none>    b9df29545b1d   4 months ago   950MB
docker.elastic.co/elasticsearch/elasticsearch   7.15.0    daa95dac8493   2 years ago    837MB

 

버전에 맞는 ES를 실행합니다. 데몬 프로세스로 지정하고, port를 연결해줍니다. "discovery.type=single-node"라고 지정하면 cluster에 연결되지 않는 standalone 모드로 동작합니다. 

docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" daa95dac8493

 

실행된 ES를 확인합니다. 

// docker ps
hwanseok@air docker % docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                            NAMES
dcaafdf9b522   daa95dac8493   "/bin/tini -- /usr/l…"   5 seconds ago   Up 4 seconds   0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   recursing_tesla

 

9200 포트로 접속해서 정보를 확인할 수 있습니다.  

// curl http://127.0.0.1:9200

{
  "name" : "193e3ef97b51",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "aMu6xqUVSqSNIMO17BirmA",
  "version" : {
    "number" : "7.15.0",
    "build_flavor" : "default",
    "build_type" : "docker", // build_type이 tar에서 docker로 변경됨
    "build_hash" : "79d65f6e357953a5b3cbcc5e2c7c21073d89aa29",
    "build_date" : "2021-09-16T03:05:29.143308416Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

 

docker에서 실행되고 있는 ES를 종료합니다.  

docker stop dcaafdf9b522

5. Easticsearch 실행하기 :: docker compose로 실행해보기

tar 대신 docker compose로 ES를 실행하는 방법입니다

// cat docker-compose-single-node.yml
version: '3.7'
services:
  es-singlenode:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0
    container_name: es-singlenode
    environment:
      - node.name=single-dode
      - cluster.name=fastcampus
      - discovery.type=single-node
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - es-bridge
networks:
  es-bridge:
    driver: bridge
docker-compose -f docker-compose-single-node.yml up
docker-compose -f docker-compose-single-node.yml up -d
docker ps
docker-compose -f docker-compose-single-node.yml down
728x90