Windows 및 Ubuntu에서 MongoDB와 함께 Elastic Search 설치 및 사용
- 엘라스틱서치란?
- Windows 10에 Elasticsearch 설치
- Ubuntu 20.04에 Elasticsearch 설치
- MongoDB에서 Elasticsearch를 사용하는 주된 이유
이 문서는 Windows 및 Ubuntu 20.04에서 Elasticsearch를 위한 단계별 설치 및 구성 가이드입니다. 또한 두 운영 체제에 대해 MongoDB와 함께 Elasticsearch를 사용하는 방법도 보여줍니다.
엘라스틱서치란?
Elasticsearch는 로그를 저장하도록 설계된 오픈 소스 실시간 분산 및 분석 엔진인 NoSQL 데이터베이스입니다. Elasticsearch는 Apache Lucene을 기반으로 Java 프로그래밍으로 개발되었습니다.
LinkedIn 및 OpenStack을 비롯한 많은 유명 회사에서 사용합니다. 스키마 및 테이블 대신 문서를 기반으로 하는 전체 텍스트 검색을 지원합니다.
데이터 마이그레이션, 인덱싱 및 동기화에도 사용됩니다. Elasticsearch는 애플리케이션에 너무 많은 검색 작업과 필터가 필요할 때 가장 좋은 선택입니다.
Windows 10에 Elasticsearch 설치
1단계: Java가 설치되어 있는지 확인
Windows 10에 Elasticsearch를 설치하려면 시스템에 최신 버전의 Java가 설치되어 있어야 합니다. 다음 명령 중 하나를 사용하여 Java가 이미 컴퓨터에 설치되어 있는지 확인할 수도 있습니다.
Elasticsearch를 설치하려면 Java 버전 7 이상이 있어야 합니다.
2단계: Elasticsearch .zip
파일 다운로드
이 웹사이트로 이동하여 다음 스크린샷에서 다운로드 링크를 클릭합니다. 다음으로 Elasticsearch를 사용할 플랫폼을 선택하고 .zip
파일을 다운로드합니다.
3단계: Elasticsearch 배치 파일 실행
.zip
파일을 다운로드한 후 원하는 위치에 압축을 풉니다. 그런 다음 bin
폴더로 이동하여 elasticsearch
배치 파일을 두 번 클릭합니다.
뒤에서 단계가 수행되는 표준 Windows 배치 파일에 불과합니다. 또한 다음과 같은 Elasticsearch 데몬을 머신에 불러오는 데 도움이 됩니다.
그것을 열어두고 다음 단계를 따르십시오.
4단계: 인증 비활성화(학습 목적으로만)
기본적으로 인증이 활성화되어 있으므로 로그인 자격 증명을 입력해야 합니다. 기본 로그인 자격 증명을 사용하거나 이 페이지를 따라 변경할 수 있습니다.
이 문서에서는 인증을 비활성화합니다(학습용일 뿐이지만 프로덕션 환경에서는 권장됨). 메모장을 사용하여 %ES_HOME%\config\elasticsearch.yml
경로에 있는 elasticsearch.yml
파일을 엽니다.
여기에서 ES_HOME
은 Elasticsearch 홈 디렉토리입니다. 예를 들어, 우리의 경우 elasticsearch.yml
은 C:\Users\DelftStack\Desktop\elasticsearch-8.2.2-windows-x86_64\elasticsearch-8.2.2\config
에 있을 수 있습니다.
elasticsearch.yml
파일이 열리면 아래 스크린샷과 같이 xpack.security.enabled
옵션을 검색하고 값을 false
로 설정합니다.
Elasticsearch를 중지하고 elasticsearch.bat
파일을 실행하여 다시 시작하십시오.
5단계: 브라우저에서 Elasticsearch 실행
즐겨 사용하는 브라우저에 http://localhost:9200
을 입력합니다. 다음 스크린샷과 유사한 페이지가 표시되면 Elasticsearch가 성공적으로 실행되고 있는 것입니다.
Ubuntu 20.04에 Elasticsearch 설치
1단계: 필수 종속성 설치
업데이트/업그레이드 패키지 색인:
sudo apt update
sudo apt upgrade
Windows OS와 마찬가지로 Java는 Elasticsearch를 설치하기 위해 Ubuntu에서도 필요합니다. 아직 설치되어 있지 않다면 아래 명령어를 실행하여 Ubuntu 20.04에서 기본 JDK 설치를 실행합니다.
sudo apt install openjdk-8-jdk
설치가 완료되면 java -version
을 사용하여 설치되어 있는지 확인하십시오.
또한 HTTPS
를 통해 모든 저장소에 액세스할 수 있도록 APT Transport
패키지를 설치해야 합니다.
sudo apt install apt-transport-https
2단계: Ubuntu에서 Elasticsearch 다운로드 및 설치
다음 작업은 Elasticsearch 저장소를 추가하는 것입니다. wget
쿼리를 사용하여 공개 키를 가져옵니다.
모든 것이 잘 진행되면 출력으로 OK
가 있어야 합니다.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
이제 다음 명령을 실행하여 시스템에 저장소를 추가합니다. 이 튜토리얼을 작성하는 시점에서 이것이 최신 버전이기 때문에 다음 명령에서 8.x
를 작성하고 있습니다.
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
다시 한 번 아래 명령을 사용하여 패키지 인덱스를 업데이트하십시오.
sudo apt update
다음 명령어를 실행하여 Elasticsearch를 설치합니다. 설치하는 데 시간이 걸릴 수 있습니다.
따라서 성공적으로 완료하십시오.
sudo apt install elasticsearch
설치 후에는 Elasticsearch가 스스로 시작되지 않기 때문에 시작해야 합니다. 또한 머신을 재부팅하면 Elasticsearch를 다시 실행해야 합니다.
이러한 상황을 방지하려면 아래 명령을 실행하여 시스템 재부팅 후 Elasticsearch를 자동으로 다시 로드하십시오.
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
이제 다음 명령어를 사용하여 Elasticsearch의 상태를 확인합니다.
sudo systemctl status elasticsearch
3단계: Elasticsearch 구성
기본적으로 Elasticsearch는 기본 사용을 위해 미리 구성되어 있습니다. 설정에서 하나의 노드를 사용하려는 경우 구성 파일을 변경할 필요가 없습니다.
Elasticsearch 구성을 편집하려면 /etc/elasticsearch
디렉토리에서 elasticsearch.yml
파일을 편집하십시오. /var/log/elasticsearch/logging.yml
에서 로깅 구성을 찾을 수도 있습니다.
이 튜토리얼의 인증을 비활성화하기 위해 elasticsearch.yml
파일을 편집하고 있습니다. xpack.security.enabled
값을 true
에서 false
로 변경합니다.
elasticsearch.yml
파일을 편집할 때마다 다음 명령을 사용하여 서비스를 다시 시작하는 것을 잊지 마십시오.
sudo systemctl restart elasticsearch.service
그런 다음 다음 명령을 사용하여 Elasticsearch가 실행 중인지 확인합니다.
curl localhost:9200
브라우저에 http://localhost:9200
을 입력할 수도 있으며, 위의 curl
명령과 동일한 결과가 표시되어야 합니다. 또한 이 기사를 확인하여 Elasticsearch를 보호할 수 있습니다.
MongoDB에서 Elasticsearch를 사용하는 주된 이유
우리는 MongoDB를 사용하여 데이터를 저장하고 쿼리하는 반면 Elasticsearch는 데이터에 대한 전체 텍스트 인덱싱에 사용됩니다. 따라서 두 가지(인덱싱을 위한 Elasticsearch와 저장을 위한 MongoDB)의 조합은 많은 기업이 따르는 일반적인 아키텍처 중 하나입니다.
Elasticsearch는 검색용으로 개발되었으며 데이터 인덱싱을 위한 고급 기능도 제공합니다. 데이터 분석을 위해 Kibana
및 Logstash
와 함께 작동합니다.
Elasticsearch 사용의 장점 중 하나는 지정된 문서 내의 모든 필드에 대한 빠른 검색을 제공한다는 것입니다. 개인 Google에서 데이터를 검색하는 것으로 생각할 수 있습니다.
또한 다양한 시나리오에서 Elasticsearch를 사용할 수 있습니다. 예를 들어 동기화를 수행하고 검색 엔진, 데이터 마이그레이션, 인덱싱 등을 구축할 수 있습니다.
이 튜토리얼에서는 동기화 목적으로 Elasticsearch를 MongoDB와 함께 사용하는 방법을 배웁니다.
동기화 수행을 위해 Elasticsearch 사용
Windows/Ubuntu에서 Elasticsearch와 MongoDB를 사용하여 동기화를 수행하려면 아래 단계를 따라야 합니다. 그 전에 모든 종속성이 있는지 확인하십시오.
예를 들어 이 코드 예제에서는 Node.js
를 사용하고 있습니다. 또한 두 데이터베이스 엔진(MongoDB 및 Elasticsearch)을 계속 실행하십시오.
그런 다음 단계를 따르십시오.
-
mongoose
및mongoosastic
패키지를 가져옵니다. -
MongoDB 엔진과의 성공적인 연결을 설정합니다.
-
MongoDB 스키마를 생성합니다.
-
mongoosastic
플러그인을 사용하여 Elasticsearch에 연결합니다. -
먼저 MongoDB 모델을 생성한 다음 Elasticsearch 매핑을 생성합니다.
-
MongoDB 데이터베이스에 데이터를 추가하고 Elasticsearch와 동기화해야 합니다.
예제 코드(전체 코드를 파일에 넣으십시오. app.js
파일에 있습니다):
// Step 1:
const mongoose = require('mongoose');
const mongoosastic = require('mongoosastic');
// Step 2:
mongoose.connect('mongodb://localhost:27017/studentdb');
// Step 3:
var StudentSchema =
new mongoose.Schema({firstname: String, lastname: String, city: String});
// Step 4:
StudentSchema.plugin(mongoosastic, {'host': 'localhost', 'port': 9200});
// Step 5:
var Student = mongoose.model('student', StudentSchema);
Student.createMapping((err, mapping) => {
console.log('mapping created');
});
// Step 6:
var newStudent =
new Student({firstname: 'Mehvish', lastname: 'Ashiq', city: 'Lahore'});
newStudent.save((err) => {
if (err) {
console.log(err);
}
console.log('Student is added in both databases');
})
newStudent.on('es-indexed', (err, result) => {
console.log('indexed to elastic search');
});
이제 이 코드를 실행하십시오. 다음과 같을 것입니다.
다음과 같이 MongoDB에서 항목을 확인합니다.
그런 다음 http://localhost:9200/students/_search
를 열어 Elasticsearch에서도 확인합니다. 다음 스크린샷과 유사하게 보일 것입니다.