Elasticsearch 1.0.0 설치와 사용방법

Elasticsearch와 관련해서 참고할 만한 내용을 기록했다. 오래된 프로젝트를 다시 세팅하면서 썼고, Elasticsearch 버전은 1.0.0이다.

설치하기

우선 Elasticsearch 다운로드 페이지에서 파일을 다운로드 받는다.

기본

Query String Query

Query String Query 관련 공식페이지

쿼리 문자열은 단어와 연산자의 연속으로 이뤄진다.

기본 형태는 다음과 같다. QUERY_STRING_SYNTAX라고 되어 있는 부분에 쿼리를 사용할 수 있다.

Query String 문법 기본:

이런식으로 복잡한 쿼리도 사용할 수 있다.

allow_leading_wildcard 옵션은 *이나 ?를 첫 번째 문자로 허용여부를 설정할 수 있다. 기본값은 True다. 정규식에서는 이 옵션의 영향을 받지 않는다. 다음과 같은 쿼리는 Elasticsearch가 인덱스의 모든 단어를 강제로 찾게한다.

analyze_wildcard 옵션은 기본적으로 검색어에 있는 와일드카드를 분석하지 않는다. 세팅을 true로 하면 와일드카드를 분석하려고 최대한 노력하게 된다.

토큰화와 관련해서 검색시 주의할 점

예를들어 다음과 같은 데이터가 있다.

f_name이 AcroRd32라는 단어와 VV11.0.14.16VV라는 단어가 모두 포함된 경우를 찾으려고 했다. 그래서 이런식으로 검색하면 될 줄 알았다.

안된다. 표준 토크나이저로 토큰화되므로 필드의 본래의 텍스트에 검색을 하는 것이 아니라 토큰화된 단어를 검색한다. 따라서 다른 토크나이저로 변경할 필요가 있다.

스냅샷과 스냅샷을 통한 복원

공식 페이지 문서

스냅샷 저장소를 만들고, 현재 상태를 스냅샷해서, 저장소 디렉토리에 보관이 되고, 이것을 다른 클러스터에서 복원할 수 있다.

Reroute

위에서 다른 클러스터로 복원했을 때, 리플리케이션과 샤드 세팅이 다르면 Unassigned 상태가 된다. 이런 경우 Unassigned 상태를 정상적인 상태로 만들고 싶을 때 reroute를 사용한다. reroute 커맨드는 클러스터가 reroute 할당 명령을 실행하도록 해준다.

스냅샷 했던 서버의 상태:

  • replication : 5
  • shard : 2

복원 할 서버 상태:

  • replication : 0
  • shard : 1

index를 만들지 않은 상태에서 복원해서 그럴 수도 있는데, 그건 테스트 하지 않았다.