Engineering/Elastic Search
-
[Elastic Search] 클러스터의 구성 요소Engineering/Elastic Search 2020. 7. 9. 23:51
엘라스틱서치는 기본적으로 클러스터라는 단위로 데이터를 제공합니다. 클러스터는 하나 이상의 물리적인 노드로 이뤄져 있으며 각 노드는 모두 데이터 색인 및 검색 기능을 제공하는 일종의 물리적인 서버이기도 합니다. 내부에는 루씬 라이브러리가 자리 잡고 있으며 이는 엘라스틱서치의 근간을 이루는 핵심 모듈입니다. 클러스터 (Cluster) 클러스터는 데이터를 실제로 가지고 있는 노드의 모음입니다. 엘라스틱서치에서는 관련된 모든 노드들을 논리적으로 확장해서 클러스터라고 부릅니다. 같은 클러스터 내부의 데이터만 서로 공유가 가능하기 때문에 연관된 노드들이 하나의 클러스터로 연결되도록 설정을 해주어야 합니다. 이를 위해 같은 클러스터를 구성하는 노드들은 같은 클러스터 이름으로 설정해야 합니다. 클러스터 내부의 노드들은..
-
[Elastic Search] 동의어 사전Engineering/Elastic Search 2020. 7. 6. 23:49
동의어 사전 Tokenizer에 의해 토큰이 모두 분리되면 다양한 토큰 필터를 적용해 토큰을 가공할 수 있습니다. 토큰 필터를 이용하면 토큰을 변경하는 것은 물론이고 토큰을 추가하거나 삭제하는 것도 가능해집니다. 그중에서 동의어 처리에 대한 필터는 엘라스틱서치에서 제공하는 Synonym 필터를 사용하면 동의어 처리가 가능합니다. 동의어는 검색 기능을 풍부하게 할 수 있게 도와주는 도구 중 하나입니다. 원문에 특정 단어가 존재하지 않더라도 색인 데이터를 토큰화해서 저장할 때 동의어나 유의어에 해당하는 단어를 함께 저장해서 검색이 가능하도록 만드는 기술입니다. 예를 들어, "Elasticsearch"라는 단어가 포함된 원문이 필터를 통해 인덱스에 저장된다면 "엘라스틱서치"라고 검색했을 때 검색되지 않을 것입..
-
[Elastic Search] 엘라스틱서치 분석기Engineering/Elastic Search 2020. 7. 4. 23:03
텍스트 분석 개요 엘라스틱서치는 루씬을 기반으로 구축된 텍스트 기반 검색엔진입니다. 루씬은 내부적으로 다양한 분석기를 제공하는데, 엘라스틱서치는 루씬이 제공하는 분석기를 그대로 활용합니다. 다음과 같은 문장이 있다고 해보겠습니다. "프로그래밍하기 좋은 날씨, 즐거운 프로그래밍" 일반적으로 특정 단어가 포함된 문서를 찾으려면 검색어로 찾을 단어를 입력하면 될 것이라 생각할 것입니다. 하지만 엘라스틱 서치는 텍스트를 처리하기 위해 기본적으로 분석기를 사용하기 때문에 생각하는 대로 동작하지 않습니다. 예를 들어 "프로그래밍"이라는 단어를 입력하면 검색되지 않을 것입니다. 이는 "프로그래밍"이라는 단어가 존재하지 않기 때문에 해당 문서가 검색되지 않는 것입니다. 엘라스틱서치는 문서를 색인하기 전에 해당 문서의 ..
-
[Elastic Search] 클러스터, 노드, 샤드Engineering/Elastic Search 2020. 6. 16. 23:58
클러스터, 노드, 샤드의 관계는 아래의 그림과 같습니다. 위의 구조는 하나의 클러스터에 노드1, 노드2로 총 2개의 물리적 노드로 구성되어 있습니다. 엘라스틱서치 클러스터는 인덱스의 문서를 조회할 때 마스터 노드를 통해 2개의 노드를 모두 조회해서 각 데이터를 취합한 후 결과를 하나로 합쳐서 반환합니다. 현재는 하나의 클러스터만 만들어져 있지만 여러 개의 클러스터를 연결해서 구성할 수도 있으며, 이때는 클러스터의 이름으로 각각을 구분해야 합니다. 클러스터에 있는 노드는 실시간으로 추가, 제거가 가능하기 때문에 가용성이나 확장성 측면에서 매우 유연합니다. 샤드는 primary shard와 replica shard 두 가지 종류가 있습니다. primary shard는 각 인덱스 별로 최소 1개 이상 존재해야..