Elasticsearch6

elasticsearch 6.* elasticsearch-php 를 이용한 검색엔진 개발 - 1 (환경구성)

Jack Moon 2018. 9. 19. 17:12


##### 서버 환경


CentOS Linux release 7.*

PHP 7.*

JDK 1.8.0_131 이상


##### Elasticsearch, Kibana 설치


elastic6 계정을 설정하여 Elasticsearch, Kibana 6.4.1 설치

Elasticsearch 다운로드 주소 (https://www.elastic.co/downloads/elasticsearch)

Elasticsearch 다운로드 주소 (https://www.elastic.co/downloads/kibana)


1. 계정설정

[root@ ~]# useradd elastic6

[root@ ~]# passwd elastic6

[root@ ~]# su - elastic6


2. 다운로드

[elastic6@ ~]$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.1.tar.gz

[elastic6@ ~]$ wget wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.1-linux-x86_64.tar.gz


3. 설치 (압축해제)

[elastic6@ ~]$ tar -xvf elasticsearch-6.4.1.tar.gz

[elastic6@ ~]$ tar -xvf kibana-6.4.1-linux-x86_64.tar.gz


4. 실행 (Background로 실행)

[elastic6@ ~]$ ./elasticsearch-6.4.1/bin/elasticsearch -d

[elastic6@ ~]$ ./kibana-6.4.1-linux-x86_64/bin/kibana &


기본적으로 Elasticsearch 는 9200 포트를 사용하며

만약 한대의 서버에서 여러개의 노드를 실행시 

첫번째 노드 9200

두번째 노드 9201

세번째 노드 9203 이렇게 포트를 사용한다


Kibana는 5601 포트 사용


5. Kibana 설정

[elastic6@ ~]$ vi ./kibana-6.4.1-linux-x86_64/config/kibana.yml

server.host: "0.0.0.0"  #원격에서 kibana 접속시

elasticsearch.url: "http://ip:9200"   #elasticsearch가 kibana와 다른 서버에 있을시



##### Elasticsearch 공식 형태소 분석기 Nori


노리는 2018년 Elasticsearch에서 개발한 한글 형태소 분석기로 별도의 analyzer 가 없고 tokenizer 만 있어 analyzer를 생성해서 사용해야 한다.


설치

[elastic6@ ~]$ ./elasticsearch-6.4.1/bin/elasticsearch-plugin install analysis-nori


테스트 (REST API를 실행할때는 Kibana - Dev Tools 사용)

1
2
3
4
5
POST _analyze
{
  "tokenizer": "nori_tokenizer",
  "text": "볼보 volvo bmw, 아우디, 벤츠, 폭스바겐, 렉서스, 재규어, 랜드로버, 인피니티 수입차, 자동차+관세"
}
cs



######### elasticsearch heap size 설정 (config/jvm.options)


-Xms : 최소 heap size

-Xmx : 최대 heap size


* elastic.co 의 권고

- 최소 힙 크기 ( Xms)와 최대 힙 크기 ( Xmx)를 서로 같게 설정

- 물리적 RAM의 50 % 이하로 설정


######### elasticsearch 설정 (config/elasticsearch.yml)


cluster.name: 클러스터이름

node.name: 노드이름

network.host: IP주소

http.port: 사용할 port

discovery.zen.ping.unicast.hosts: ["host1", "host2"]  # 클러스터 노드들의 주소