기본 콘텐츠로 건너뛰기

글

라벨이 Elasticsearch인 게시물 표시

[Elasticsearch] Elasticsearch Mapping 설정과 2.x, 5.x버전별 차이점 정리

Mappings Elasticsearch에서 사용하는 Mapping를 대해 알아보도록 하겠습니다. 가장 기본적인 내용이면서 가장 중요한 내용입니다. 초기 Index 생성시 Mappings을 각 Field 용도에 맞춰 설계하는 것이 가장 중요합니다. Index 생성 시 Mappings를 설정하고 데이터를 색인하게 되면 그 이후로 Mppaings를 변경할 수 없습니다. 단, 추가는 언제든지 가능합니다. 그렇다고 절대로 Mapping를 변경할 수 없는 것은 아닙니다. Alias를 이용하여 백그라운드에서 데이터를 재인덱싱하여 변경하는 방법은 있지만, 이 내용은 여기서 다루지 않겠습니다. 자세한 내용이 궁금하신 분들은 아래 링크를 통해 확인하세요. https://www.elastic.co/guide/en/elasticsearch/reference/5.4/mapping.html 기본적으로 Mapping를 설정하지 않아도 Elasticsearch에서 자동으로 설정을 해주지만 조금 더 효율적으로 사용하기 위해 자신이 원하는 Mapping를 설정하는 것이 가장 좋은 방법입니다. 현재 글을 쓰는 시점에는 Elasticsearch 5.5.2 버전이 릴리즈 된 상태입니다. Google에 Mapping 관련 내용 검색 시 대부분의 글들은 2.x 버전 기준의 글이 많아서 5.x 버전 기준으로 작성 후 2.x버전에서 변경된 내용도 함께 정리하겠습니다. Elasticsearch Document - Mapping 의 기본 분류 Field datatypes Meta-Fields Mapping parameters Dynamic Mapping Field datatypes string text and keyword Numeric datatypes long, integer, short, byte, double, float, half_float, scaled_float Date datatype date Boolean datatyp...

[Elasticsearch] Elasticsearch Physical Layout - Cluster, Node, Shard, Replica

물리적 레이아웃 엘라스틱서치의 물리적 레이아웃에 해당하는 샤드(Shard)와 노드(node), 클러스터(Cluster)를 반드시 이해하고 넘어 가야한다. 이유는 실제 엘라스틱서치를 이용하여 빅데이터 처리, 검색 시스템을 운영하면서 엘라스틱서치 서버 확장이 필요한 시기가 올 수 있기 때문이다. 클러스터 (Cluster) 클러스터는 노드의 모임, 엘라스틱서치의 모임이라는 생각일 가지고 접근한다면 좀 더 이해하기 쉬운 것 같다. 각 노드는 데이터를 나눠 저장하고 있으며 해당 노드들을 하나로 묶어 주는 개념이다. 클러스터에 노드를 추가하는 방법으로 확장하는 것을 수평적 확장(Horizontal scaling)이라고 부르며 이 경우 각 노드는 각자의 역할을 수행하고 모든 노드가 일을 공유하여 처리하기 때문에 부가적인 성능의 이득을 얻는다. 노드 (Node) 간단히 말하면 노드는 엘라스틱서치를 실행하는 프로세스라고 말할 수 있으며, n개의 샤드로 구성된다. 하나의 서버 내부에서 엘라스틱서치를 여러 번 실행하면 하나의 서버 안에 n개의 노드를 가질 수 있다. 만약 또 다른 서버에 엘라스틱서치를 실행했다면 그 또한 노드가 생성되는 것이고 n개의 노드들을 하나로 묶기 위해서는 클러스터(Cluster)를 이용한다. 클러스터로 묶인 노드들은 각자의 역할을 수행을 할 수 있다. 각 노드에 역할을 주기 위해서는 config/elasticsearch.yml 에서 간단하게 수정이 가능하다. 노드의 역할 데이터 노드 (Data node) - node.data : true 데이터가 저장되는 노드, 색인 및 검색 작업이 수행되는 노드이다. 마스터 노드 (Master node) - node.master : true 클러스터를 관리하는 노드, 큰 구성에서는 n개의 마스터 노드를 생성하여 관리한다. 클라이언트 노드 (Client node) - http.enabled : true 네트워크 부하를 담당하며 각 노드의 앞단에서 로드 밸런서의 역할을 ...

[Elasticsearch] Elasticsearch Logical Layout - Index, Type, Document

논리적 레이아웃 Elasticsearch의 논리적 레이아웃에는 index, type, document가 있으며, 색인과 검색을 위한 데이터의 가장 작은 단위는 document 이다. 우선 논리적 레이아웃 각각의 개념 정리와 추가적으로 알게된 내용 정리 인덱스/타입/문서(index/type/document) Elasticsearch의 논리적 레이아웃이다. 데이터 계층이라고도 말할 수 있다. 기존에 익숙한 RDBMS와 비교하여 설명하면 조금더 이해하기 쉬울것 같아 내용을 표로 정리한다. ElasticSearch RDBMS Index Database Type Table Document Rows 또한 Elasticsearch는 RESTful API를 통해 질의를 할 수 있으며 표현은 아래와 같이 한다. http://{Elasticsearch-host}:{port}/index/type/ID(document) Index Type Document 참고 자료 Elasticsearch in Action - understanding the logical layout documents, type, index jjeong blog - Elastic 박연오 blog