728x90
반응형
Elasticsearch(엘라스틱서치)와 SOLR(솔라)의 공통점
1. 루씬을 기반으로 한 텍스트 검색 엔진 라이브러리이다.
2. Restful API를 제공한다.
3. Cache를 지원한다.
4. 분산처리에 용이하다.
5. Spring Component를 지원한다.
Elasticsearch(엘라스틱서치)와 SOLR(솔라) 비교
Solr ElasticSearch
도큐먼트 형식 XML, CSV, JSON JSON
다중 스키마 문서 지원하지 않음 지원
조인 지원하지 않음 Parent_type/Children_type
분산 시스템 노드 연결 주키퍼 디스커버리, 주키퍼
MySQL 불러오기 dataimportHandler logstrash
Elasticsearch(엘라스틱서치) ?
Elasticsearch(엘라스틱서치) 는 앞서 말했듯, 루씬을 기반으로 한 텍스트 검색 엔진 라이브러리이다. 사전 매핑 없이 JSON 문서 형식으로 입력하면 별도의 이벤트가 없어도 바로 색인을 시작한다. 이렇게 저장된 데이터는 별도의 재시작/갱신 없이도 바로 검색에 사용될 수 있다. 이는 곧 색인 작업이 완료됨과 동시에 검색이 가능하다는걸 의미한다. 이러한 특징들 덕분에 SOLR(솔라) 와 비교하여 실시간 검색 엔진 구현에 좀 더 적합하다.
Elasticsearch(엘라스틱서치) 와 관계형 데이터베이스
Elasticsearch(엘라스틱서치) 를 쉽게 이해하기 위해 사용되는 용어들을 관계형 데이터베이스와 비교하면 쉽게 받아드릴수 있다.
RDB Elasticsearch
DATABASE INDEX
TABLE TYPE
ROW DOCUMENT
COLUMN FEILD
SCHEMA MAPPING
elasticsearch version = 5.1.1
logstash version = 5.1.1
OS version = centos 7.n
사전 작업
echo "elasticsearch hard nofile 65536" >> /etc/security/limits.conf
echo "elasticsearch soft nofile 65536" >> /etc/security/limits.conf
echo "elasticsearch hard nproc 65536" >> /etc/security/limits.conf
echo "elasticsearch soft nproc 65536" >> /etc/security/limits.conf
echo "root hard nofile 65536" >> /etc/security/limits.conf
echo "root soft nofile 65536" >> /etc/security/limits.conf
echo "root hard nproc 65536" >> /etc/security/limits.conf
echo "root soft nproc 65536" >> /etc/security/limits.conf
echo "nobody hard nofile 65536" >> /etc/security/limits.conf
echo "nobody soft nofile 65536" >> /etc/security/limits.conf
echo "nobody hard nproc 65536" >> /etc/security/limits.conf
echo "nobody soft nproc 65536" >> /etc/security/limits.conf
vi /usr/lib/sysctl.d/00-system.conf
===============================================
vm.max_map_count = 262144
===============================================
yum install wget rdate unzipepel-release epel* -y && rdate -s time.bora.net
cd ~ && wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm"
yum -y localinstall jdk-8u73-linux-x64.rpm && rm -rf ~/jdk-8u*-linux-x64.rpm && java -version
reboot
Elasticsearch(엘라스틱서치) 설치
cd /usr/local/src
tar xvf elasticsearch-5.1.1.tar.gz
cd elasticsearch-5.1.1
vi config/elasticsearch.yml
===============================================
network : 0.0.0.0
===============================================
groupadd elasticsearch
useradd elasticsearch -g elasticsearch -p elasticsearch
chown -R elasticsearch:elasticsearch /usr/local/src/elasticsearch-5.1.1
su elasticsearch
$ cd /usr/local/src/elasticsearch-5.1.1/bin/elasticsearch -d
Logstash(로그스테시) 설치
su -
cd /usr/local/src
tar xvf logstash-5.1.1.tar.gz
cd logstash-5.1.1
vi logstash-test.conf
===============================================
input {
stdin {}
}
output {
elasticsearch {
hosts => "localhost:9200"
}
stdout {
codec => rubydebug
}
}
===============================================
bin/logstash -f logstash-test.conf
-----------JDBC 설치 ------------
1.9버전까지는 reiver라는 친구를 이용하여 MySQL에 데이터를 불러왔었는데, 2.0버전부터 공식적인 지원을 중단하였다. 엘라스틱은 이후 logstash를 이용하여 MySQL의 데이터를 불러오기를 권장하고 있다.
SOLR 와 다르게 Logstash 가 Mysql 에서 data 를 가져올때 logstash 가 가져옴 (SOLR 는 dataimporthandler 가 가져옴)
cd /usr/local/src
yum -y install unzip
unzip elasticsearch-jdbc-2.1.1.2-dist.zip
cd elasticsearch-jdbc-2.1.1.2
cp lib/mysql-connector-java-5.1.33.jar ../../elasticsearch-5.1.1/lib/
/usr/local/src/logstash-5.1.1/bin/logstash-plugin list jdbc
/usr/local/src/logstash-5.1.1/bin/logstash-plugin install logstash-input-jdbc
vi logstash-mysql-test.conf
==============================================
input {
jdbc {
jdbc_driver_library => "/usr/local/src/elasticsearch-5.1.1/lib/mysql-connector-java-5.1.33.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://DB.SERVER.IPorDOMAIN:3306/sksk"
jdbc_user => "USER"
jdbc_password => "PASSWORD"
statement => "SELECT * FROM [Table name]"
schedule => "* * * * *"
}
}
output {
elasticsearch {
hosts => "localhost:9200"
} stdout {
codec => rubydebug
}
}
==============================================
/usr/local/src/logstash-5.1.1/bin/logstash -f logstash-mysql-test.conf
DB data를 실시간으로 계속 가져오는 것을 볼 수 있다.
-----------은전한닢 ------------
mecab-ko : 형태소 분석기
mecab-ko-dic : 한국어 사전
mecab-java : 메모리 누수가 해결된 버전
elasticsearch mecab-ko 플러그인
mecab-ko 라이브러리 설치
https://bitbucket.org/eunjeon/mecab-ko/downloads에서 최신 버전 다운로드
현재 기준 5.1.1과 mecab-0.996-ko-0.9.2.tar.gz 호환 문제 없음
$ sudo apt-get install g++ #의외로 이걸로 에러가 발생 할 수 있음
$ tar -xvzf mecab-XX-ko-XX.tar.gz
$ cd mecab-XX-ko-XX
$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig
라이브러리는 기본적으로 /usr/local/lib/ 에 설치
mecab-ko-dic 사전 설치
https://bitbucket.org/eunjeon/mecab-ko-dic/downloads 에서 최신버전 다운로드
현재 기준 5.1.1과 mecab-ko-dic-2.0.1-20150920.tar.gz 호환 문제 없음
$ tar -xvzf mecab-ko-dic-XX.tar.gz
$ cd mecab-ko-dic-XX
$ ./configure
$ make
$ sudo make install
사전은 기본적으로 /usr/local/lib/mecab/dic/mecab-ko-dic에 설치
analysis-mecab-ko plugin 설치
$ ./bin/elasticsearch-plugin install https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/downloads/elasticsearch-analysis-mecab-ko-5.1.1.0.zip
mecab-java 다시 컴파일
make 전에 링크 참고하여 컴파일 옵션 바꾸기
$ wget https://bitbucket.org/eunjeon/mecab-java/downloads/mecab-java-0.996.tar.gz
$ tar zxvf mecab-java-0.996.tar.gz
$ cd mecab-java-0.996
$ vi Makefile
# java path 설정. ; INCLUDE=/usr/lib/jvm/java-7-oracle/include
$ make
$ cp MeCab.jar /home/lks21c/elasticsearch-5.1.1/plugins/elasticsearch-analysis-mecab-ko/elasticsearch-analysis-mecab-ko-5.1.1.0.jar #경로는 맞게 변경
$ sudo cp libMeCab.so /usr/local/lib
반응형
'엔지니어 > Linux' 카테고리의 다른 글
nginx_stats(zabbix nginx script) (0) | 2017.01.16 |
---|---|
nginx 1.8 + tomcat 8 (0) | 2017.01.16 |
ats 모듈 만들기 (0) | 2017.01.13 |
Apache traffic server-5.2.1 install (0) | 2017.01.13 |
SOLR 5.5.2 단독형 설치 (with jdbc, arirang.lucene-analyzer) (0) | 2017.01.11 |