웹사이트 검색

Ubuntu VPS에 Elasticsearch를 설치하는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 Ubuntu 버전에 대해 설명합니다. 현재 Ubuntu 12.04를 실행하는 서버를 운영 중인 경우 지원되는 Ubuntu 버전으로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

  • Ubuntu 14.04로 업그레이드합니다.
  • Ubuntu 14.04에서 Ubuntu 16.04로 업그레이드
  • 서버 데이터를 지원되는 버전으로 마이그레이션

이유:

대신 참조:

Elasticsearch는 분산된 RESTful 검색 및 분석을 위한 플랫폼입니다. 필요에 따라 확장할 수 있으며 단일 DigitalOcean 물방울에서 즉시 사용을 시작할 수 있습니다. 이 튜토리얼에서는 Ubuntu에서 Elasticsearch를 다운로드, 설치 및 시작합니다. 제공된 단계는 현재 Ubuntu 12.04.3 x64 및 Ubuntu 13.10 x64에서 테스트되었습니다.

종속성

먼저 apt-get update를 실행하여 사용 가능한 패키지 목록을 업데이트합니다.

다음으로 Java 런타임을 설치해야 합니다. 여기에는 두 가지 옵션이 있습니다.

  • Ubuntu에서 제공하는 OpenJDK 런타임을 설치합니다.
  • Elasticsearch 권장 Java 런타임인 Oracle Java를 설치합니다.

첫 번째 옵션은 Elasticsearch에 익숙해지고 놀고 싶거나 작은 노드 모음을 실행하려는 경우 완벽하게 작동합니다. 후자의 옵션은 호환성 보장을 위해 Elasticsearch에서 권장하는 옵션입니다.

OpenJDK

첫 번째 옵션을 수행하려면 apt-get install openjdk-6-jre를 실행하기만 하면 됩니다.

오라클 자바

두 번째 옵션의 경우 Elasticsearch 문서의 단계를 따릅니다. 시작하려면 Oracle Java 런타임이 포함된 저장소를 추가해야 합니다.

sudo add-apt-repository ppa:webupd8team/java

그런 다음 apt-get update를 실행하여 이 새 저장소에서 패키지 정보를 가져와야 합니다. 그런 다음 Oracle Java 런타임을 설치할 수 있습니다.

sudo apt-get install oracle-java7-installer

위 명령을 실행하는 동안 Oracle 바이너리 라이선스에 동의해야 합니다. 라이선스에 동의하지 않으면 대신 OpenJDK 런타임을 대신 설치할 수 있습니다.

Java 설치 테스트

그런 다음 java -version을 실행하여 Java가 설치되었는지 확인할 수 있습니다.

이것이 현재 필요한 모든 종속성이므로 Elasticsearch를 가져와 설치하는 작업을 시작하겠습니다.

다운로드 및 설치

Elasticsearch는 zip, tar.gz, deb 또는 rpm 패키지로 해당 사이트에서 직접 다운로드할 수 있습니다. 아래 텍스트에서 필요할 때 필요한 파일을 다운로드하므로 미리 이 작업을 수행할 필요가 없습니다.

설치하다

Elasticsearch에서 제공하는 다운로드 옵션을 고려하면 다음과 같은 몇 가지 옵션이 있습니다.

  • zip 또는 tar.gz 아카이브에서 설치합니다.
  • deb 패키지에서 설치합니다.
  • rpm 패키지에서 설치합니다.

마지막 옵션은 우분투 방식이 아니므로 무시하겠습니다.

zip 또는 tar.gz 아카이브에서 설치하는 것은 Elasticsearch를 잠시 사용하려는 경우에 가장 좋습니다. 이러한 옵션 중 하나에서 설치하면 Elasticsearch를 실행하는 데 필요한 바이너리를 사용할 수 있습니다. deb 패키지에서 설치하면 Elasticsearch가 완전히 설치되고 서버 실행이 즉시 시작됩니다. 여기에는 부팅 시 Elasticsearch를 시작하는 /etc/init.d/elasticsearch에 초기화 스크립트를 설치하는 것이 포함됩니다. Elasticsearch만 사용하려는 경우 zip 또는 tar.gz에서 설치하는 것이 좋습니다. 그렇게 하면 서버를 마음대로 시작하고 중지하는 동안 Elasticsearch를 발견할 수 있습니다.

zip 또는 tar.gz 아카이브에서 설치

zip 및 tar.gz 다운로드에는 모두 Elasticsearch용으로 미리 컴파일된 바이너리가 포함되어 있습니다.

시작하려면 편리한 위치에 소스를 다운로드하십시오. 아카이브를 추출한 후 결과 디렉터리에서 직접 바이너리를 실행할 수 있으므로 Elasticsearch에 액세스하려는 모든 사용자가 액세스할 수 있는 위치에 바이너리를 배치해야 합니다. 이 자습서에서는 현재 사용자의 디렉터리에 다운로드합니다. /tmp에 다운로드하면 VPS를 재부팅하면 사라질 가능성이 높습니다. 이것이 원하는 것이라면 계속해서 다운로드하십시오. mktemp -d를 실행하여 /tmp에 새 임시 디렉토리를 빠르게 만들 수 있습니다.

어쨌든 진행하기 전에 Elasticsearch를 추출하려는 디렉토리에 있는지 확인하십시오.

아카이브 다운로드

실행

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.zip

또는

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.tar.gz

첫 번째 명령은 zip 아카이브를 다운로드하고 두 번째 명령은 tar.gz 아카이브를 다운로드합니다. zip 패키지를 다운로드한 경우 이전에 apt-get install unzip을 실행했는지 확인한 다음 다음을 실행하십시오.

unzip elasticsearch-0.90.7.zip

또는 tar.gz 패키지를 다운로드한 경우 다음을 실행합니다.

tar -xf elasticsearch-0.90.7.tar.gz

두 옵션 모두 elasticsearch-0.90.7 디렉토리를 생성합니다. cd elasticsearch-0.90.7을 입력하여 해당 디렉토리로 변경하면 bin 폴더에서 바이너리를 찾을 수 있습니다.

Debian 소프트웨어 패키지에서 설치

Ubuntu용으로 다운로드할 수 있는 최고의 패키지는 deb 패키지입니다. RPM은 작동할 수 있지만 먼저 변환해야 하며 여기서는 이에 대해 다루지 않습니다. 다음을 실행하여 deb 패키지를 가져옵니다.

wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.7.deb

다음을 실행하여 데비안 패키지에서 직접 설치합니다.

dpkg -i elasticsearch-0.90.7.deb

그러면 Elasticsearch가 /usr/share/elasticsearch에 제대로 설치됩니다. Debian 패키지에서 설치하면 부팅 시 실행되는 Elasticsearch 서버를 시작하는 /etc/init.d/elasticsearch에 init 스크립트도 설치된다는 점을 기억하십시오. 설치 후 서버도 즉시 시작됩니다.

구성 파일

zip 또는 tar.gz 아카이브에서 설치한 경우 구성 파일은 결과 디렉터리의 config 폴더에서 찾을 수 있습니다. Debain 패키지에서 설치하는 경우 구성 파일은 /etc/elasticsearch에서 찾을 수 있습니다.

두 경우 모두 elasticsearch.yml 및 logging.yml의 두 가지 기본 구성 파일이 있습니다. 첫 번째는 Elasticsearch 서버 설정을 구성하고 후자는 당연히 Elasticsearch에서 사용하는 로거 설정을 구성합니다.

"elasticsearch.yml”은 기본적으로 주석만 포함합니다.

"logging.yml\은 기본 로깅에 대한 구성을 제공합니다. 결과 로그는 /var/log/elasticsearch에서 찾을 수 있습니다.

Elasticsearch 공개 액세스 제거

계속하기 전에 퍼블릭 인터넷에 액세스할 수 없도록 Elasticsearch를 구성해야 합니다. Elasticsearch에는 기본 제공 보안이 없으며 HTTP API에 액세스할 수 있는 모든 사람이 제어할 수 있습니다. elasticsearch.yml을 편집하면 됩니다. 패키지와 함께 설치했다고 가정하고 다음 명령을 사용하여 구성을 엽니다.

sudo vi /etc/elasticsearch/elasticsearch.yml

그런 다음 network.bind_host를 지정하는 줄을 찾은 다음 주석을 제거하고 값을 localhost로 변경하여 다음과 같이 표시합니다.

network.bind_host: localhost

그런 다음 파일의 어딘가에 다음 줄을 삽입하여 동적 스크립트를 비활성화합니다.

script.disable_dynamic: true

저장 및 종료. 이제 Elasticsearch를 다시 시작하여 변경 사항을 적용합니다.

sudo service elasticsearch restart

다른 기본 구성 옵션은 나중에 다루겠지만 먼저 가장 기본적인 Elasticsearch 설치를 테스트해야 합니다.

Elasticsearch 설치 테스트

이제 zip 또는 tar.gz 아카이브를 디렉터리로 추출했거나 Debian 패키지에서 Elasticsearch를 설치했습니다. 어느 쪽이든 사용 가능한 Elasticsearch 바이너리가 있고 서버를 시작할 수 있습니다. zip 또는 tar.gz 아카이브를 사용한 경우 결과 디렉토리에 있는지 확인하십시오. Debian 패키지를 사용하여 설치한 경우 Elasticsearch 서버가 이미 실행 중이어야 하므로 아래와 같이 서버를 시작할 필요가 없습니다.

모든 것이 제대로 작동하는지 확인합시다. 달리다

 ./bin/elasticsearch

Elasticsearch는 이제 포트 9200에서 실행되어야 합니다. Elasticsearch가 완전히 시작되는 데 약간의 시간이 걸리므로 아래의 curl 명령 실행이 즉시 실패할 수 있습니다. 응답을 시작하는 데 10초 이상 걸리지 않아야 하므로 아래 명령이 실패하면 다른 문제가 있을 수 있습니다.

다음을 실행하여 서버가 시작되었는지 확인하십시오.

curl -X GET 'http://localhost:9200'

다음 응답이 표시되어야 합니다.

{
  "ok" : true,
  "status" : 200,
  "name" : "Xavin",
  "version" : {
    "number" : "0.90.7",
    "build_hash" : "36897d07dadcb70886db7f149e645ed3d44eb5f2",
    "build_timestamp" : "2013-11-13T12:06:54Z",
    "build_snapshot" : false,
    "lucene_version" : "4.5.1"
  },
  "tagline" : "You Know, for Search"
}

위와 비슷한 응답이 표시되면 Elasticsearch가 제대로 작동하는 것입니다. 또는 :9200을 방문하여 브라우저에서 Elasticsearch 설치를 쿼리할 수 있습니다. 위의 curl을 사용할 때 본 것과 동일한 JSON이 표시되어야 합니다.

zip 또는 tar.gz 아카이브로 설치한 경우 RESTful API를 사용하여 서버를 중지할 수 있습니다.

curl -X POST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'

위의 명령은 Elasticsearch가 Debian 패키지를 사용하여 설치된 경우에도 작동하지만 service elasticsearch stop을 사용하여 서버를 중지할 수도 있습니다. 해당 service elasticsearch start를 사용하여 서버를 다시 시작할 수 있습니다.

엘라스틱서치 사용

Elasticsearch가 실행 중입니다. 이제 몇 가지 기본 구성 및 사용법을 살펴보겠습니다.

기본 구성

zip 또는 tar.gz 아카이브로 설치하는 경우 구성 파일은 결과 디렉터리 내의 config 폴더에서 찾을 수 있습니다. Debian 패키지를 통해 설치한 경우 /etc/elasticsearch/에서 구성 파일을 찾을 수 있습니다. 찾을 수 있는 두 개의 구성 파일은 elasticsearch.yml 및 logging.yml입니다. 첫 번째는 일반적인 Elasticsearch 구성입니다. 제공된 파일에는 주석만 포함되어 있으므로 기본 설정이 사용됩니다. 파일을 읽으면 옵션에 대한 좋은 개요가 제공되지만 아래에서 몇 가지 제안을 하겠습니다. 어떤 설정도 필요하지 않습니다. 다음을 수행하지 않고 Elasticsearch로 작업할 수 있지만 원시 개발 환경이 됩니다.

"cluster.name” 설정은 Elasticsearch가 자동 검색을 제공하는 방법입니다. 이는 동일한 네트워크에 있는 Elasticsearch 서버 그룹이 동일한 클러스터 이름을 공유하는 경우 자동으로 서로를 검색한다는 것을 의미합니다. 이것이 방법입니다. Elasticsearch를 확장하는 것은 간단하지만, 기본 클러스터 이름을 유지하고 네트워크에 제어할 수 없는 다른 Elasticsearch 서버가 있는 경우 잘못된 상태가 될 가능성이 있습니다.

기본 사용법

Elasticsearch 설치에 일부 데이터를 추가해 보겠습니다. Elasticsearch는 일반적인 CRUD 명령(Create, Read, Update 및 Destroy)에 응답하는 RESTful API를 사용합니다.

항목을 추가하려면

curl -X POST 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

다음 응답이 표시되어야 합니다.

{\ok”:true,\_index”:\tutorial”,\_type”:\helloworld”,\_id”:\1”,\_version”:1}

우리가 한 일은 Elasticserach 서버에 HTTP POST 요청을 보내는 것입니다. 요청의 URI는 /tutorial/helloworld/1입니다. 여기에서 매개변수를 이해하는 것이 중요합니다.

  • \튜토리얼은 Elasticsearch의 데이터 색인입니다.
  • "helloworld\ 유형입니다.
  • "1”은 위의 색인 및 유형 아래 항목의 ID입니다.

위의 curl 명령에 대한 응답을 본 경우 이제 다음을 사용하여 데이터를 쿼리할 수 있습니다.

curl -X GET 'http://localhost:9200/tutorial/helloworld/1'

다음과 같이 응답해야 합니다.

{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"exists":true, "_source" : { "message": "Hello World!" }}

성공! Elasticsearch에서 데이터를 추가하고 쿼리했습니다.

한 가지 주목해야 할 점은 쿼리에 ?pretty=true를 추가하여 더 나은 출력을 얻을 수 있다는 것입니다. 시도해 봅시다

curl -X GET 'http://localhost:9200/tutorial/helloworld/1?pretty=true'

다음과 같이 응답해야 합니다.

{
  "_index" : "tutorial",
  "_type" : "helloworld",
  "_id" : "1",
  "_version" : 1,
  "exists" : true, "_source" : { "message": "Hello World!" }
}

훨씬 더 읽기 쉽습니다. Elasticsearch 구성 파일에서 format=yaml을 설정한 경우 쿼리 문자열을 추가하지 않고도 출력이 예쁘게 인쇄됩니다.

결론

이제 Elasticsearch를 설치, 구성하고 시작했습니다. 기본 RESTful API에 응답하기 때문입니다. 이제 애플리케이션에서 Elasticsearch를 사용하여 데이터를 쉽게 추가하고 쿼리할 수 있습니다.

제출자: ckendell