동의어를 적용한 후 동의어 사전을 변경하게 되면 재색인을 해야 한다고 동의어 글에서 언급했었다. 이번 글에서는 재색인을 하지 않고 바로 적용할 수 있는 방법을 작성한다. 우선 동의어 글에 작성된 것처럼 동의어를 필터에 적용한 synonym 분석기를 mapping의 analyzer 속성에 작성했다면 재색인을 해야지만 이미 색인된 내용에 동의어가 적용된다. 하지만 인덱싱할 때 동의어를 적용하는 것이 아니라 검색할 때 검색어에 동의어를 적용한다면 검색할 문서를 변경할 필요가 없기 때문에 재색인을 하지 않고도 동의어를 통한 검색이 잘 동작하게 된다. * 세팅 및 매핑 정보 "setting" : { "filter" : { "synonym" : { "type" : "synonym", "synonyms_path" :..
단어는 다르지만, 뜻이 같은 경우 같이 검색되도록 하고 싶을 때가 있다. 예를 들어 하늘을 검색한다고 했을 때 Sky와 하늘이 같이 검색되도록 하고 싶을 때가 있는데 이때 동의어 사전을 등록하면 같이 검색되도록 할 수 있다. 동의어 사전을 등록하고 활용하기 위해서 Synonym Token Filter를 활용하면 된다. 이제 Synonym Token Filter를 활용해보자. 아래와 같이 동의어 필터를 추가한다. "filter" : { "synonym" : { "type" : "synonym", "synonyms_path" : "analysis/synonym.txt" } } synonyms_path에 들어가 있는 경로에 동의어 사전 파일이 존재해야 하며 해당 경로는 elasticsearch/config 하..
Elasticsearch는 존재하지 않는 인덱스에도 데이터를 넣을 수 있다. 이러한 동작이 가능한 이유는 Elasticsearch에서 색인을 알아서 생성해주기 때문이다. 이렇게 알아서 생성해주는 기능을 Elasticsearch에서는 동적 매핑(Dynamic Mapping)이라고 명칭하고 있다. 즉 data라는 인덱스가 없는 상태에서 아래와 같은 명령을 날리면 자동으로 인덱스가 생성되고 해당 인덱스에 데이터가 색인된다. PUT data/_doc/1 { "count": 5, "text" : "text", "date" : "2019-08-03" } 이렇게 자동으로 생성된 인덱스의 매핑 정보를 확인해보면 아래와 같이 나오는데 * 매핑 정보를 확인하는 명령 GET data/_mapping * 결과 { "data"..
Reindex API는 말 그대로 이전에 색인되어 있던 데이터를 다시 색인한다고 생각하면될 것 같다. 사용 방법은 간단한데 원본 인덱스와 재색인할 인덱스를 정해서 Reindex API를 사용하면 된다. Dynamic Mapping에 의해 재색인할 인덱스가 없는 상태에서도 사용이 가능하다. 주의할 점은 재색인할 때 원본 인덱스의 mapping이나 settings 정보는 복사하지 않기 때문에 재색인할 때 데이터를 재색인해서 넣을 인덱스를 미리 만들어 두고 재색인하는 것을 추천한다. 아래와 같은 상황에서 사용된다. 매핑의 정보를 수정하고자할 때 마이그레이션할 때 인덱스의 명칭을 변경할 때 Reindex API POST _reindex { "source": { "index": "원본 인덱스 명" }, "dest..
6.8 버전을 기준으로 작성되었다. 1. 엘라스틱서치 * 엘라스틱서치는 확장성이 뛰어난 오픈 소스로 전문 검색 및 분석 엔진이다. * 대용량의 데이터를 거의 실시간으로 저장, 검색 및 분석할 수 있다. 1.1. 관계형 데이터베이스와 비교 엘라스틱서치 RDB Index Table Document Row Field Column Mapping Schema * 장점 : 검색이 빠르고 검색하는데 필요한 기능들을 제공 * 단점 : 추가, 수정, 삭제가 느리다. 1.2. 구성요소 1.2.1. 클러스터 * 엘라스틱서치의 가장 큰 시스템 단위이며 하나의 클러스터는 하나 이상의 노드로 구성된다. * 서로 다른 클러스터는 데이터의 접근, 교환을 할 수 없는 독립적으로 존재한다. * 여러 대의 서버로 하나의 클러스터를 구성할..