kok202
Elastic search 실전 기본 (용어, 설정, API)

2019. 3. 24. 00:05[공부] 독서/실무 예제 Elasticsearch 검색엔진 기본

Elastic search 용어

Cluster : 서버들을 묶어서 분산 고유할 수 있도록 서비스로 만드는 것

curl 'localhost:9200/_cat/nodes?v'

curl 'localhost:9200/_cat/indices?v'

Node : 서버

Index : DB와 유사

Type : Table과 유사. 하지만 인덱스당 하나의 타입만을 가지도록 deprecated 될 예정 모든 type은 "_doc"으로 통일될 듯

Document : 실제 데이터 


Shard

Primary Shard : 데이터를 인덱스에 저장할 때 몇개로 나눠서 분산 저장 할 것인가. 기본값 5

Replica Shard : 분산 저장한 데이터를 몇개 복제해서 안전성을 높일 것인가. 검색 처리량도 증가시킬 수 있다. 기본값 1

ex. Primary Shard = 3, Replica Shard = 2 이면 이 인덱스는 3 + (3 * 2) 개의 Shard가 존재하게된다.

(Replica Shard는 Primary Shard와 같은 곳에 존재해선 안된다.)


Route

같은 카테고리의 문서를 같은 샤드에 저장해서 검색 처리 성능을 높이는 방법

라우팅을 설정하면 검색을 수행해야하는 샤드를 바로 설정 가능하고 처리속도가 올라간다.






elasticsearch.yml 설정

Node 설정

node.master : true // 마스터 노드 : 전체 클러스터, 노드, 샤드의 조정자 역할 (한 클러스터에 최소 2개 이상이 좋음)

node.data : true // 데이터 노드 : 데이터를 저장, 검색 수행

node.client : true // 클라이언트 노드 : 마스터 노드로 사용하지 않을 경우

// 로드 벨런서 노드 : master, data 둘 다 false 일 경우. 트래픽 분산, 결과 통합 역할을 수행

Index 설정

index.mapper.dynamic : true // 인덱스에 데이터를 넣으면 자동으로 매핑 설정

index.refresh_interval : "1s" // 인덱스에 데이터가 들어올 때 검색에 반영하는 작업을 언제 수행할지 주기 설정

action.auto_create_index : true // 자동 인덱스 설정

action.disable_shutdown : true // REST API로 노드 shutdown 기능 활성화

Network 설정

network.host : locahost

http.enabled : true // http (REST API) 사용 활성화

http.port : 9200 // http (REST API) 포트

transport.tcp.port : 9300 // TCP 포트

transport.tcp.compress : true // TCP 통신할 경우 압축하겠다.

Gateway 설정

클러스터 메타정보, 인덱스 설정, 메핑 정보를 어떻게 저장하여 장애 대응할 것인가.

gateway.type : local // local 이외는 deprecated

Discovery 설정

클러스터 구성시 노드간 통신, 마스터 노드 관리를 어떻게 할 것인가

discovery.zen.ping.multicast.enabled : false // 같은 네트워크 안의 모든 노드와 discovery 통신하겠다. false 추천

discovery.zen.minimum_master_nodes : 2 // 마스터 노드의 최소 단위 (2개 이상 추천)

discovery.zen.ping.unicast.hosts : ["localhost:9300","localhost:9301"] 

discovery.zen.ping.timeout : 3s







Elastic search REST API 

localhost:9200/_cluster

localhost:9200/_nodes

localhost:9200/_status // 클러스터, 노드 상태 점검

localhost:9200/_aliases // index alias 작업
localhost:9200/_analyze // analyzer 테스트 
localhost:9200/_cache
localhost:9200/_flush // log, memory free 수행
localhost:9200/_optimize // 세그먼트 파일 병합 작업

localhost:9200/_stats // 시스템, index 통계 정보

localhost:9200/_validate // 쿼리 유효성 점검

localhost:9200/_bulk 

localhost:9200/_count

localhost:9200/_search

localhost:9200/_msearch // 멀티 데이터 검색

localhost:9200/_mget // 멀티 데이터 패치

localhost:9200/_suggest // 검색어 자동완성, 추천

localhost:9200/INDEX/_settings // 인덱스 설정 정보

localhost:9200/INDEX/_mapping // 인덱스 설정 정보