이 튜토리얼은 ElasticSearch 버전 5.2용으로 제작되었습니다. 버전 5에는 쿼리 DSL 및 매핑 측면에서 여러 가지 주요 변경 사항이 포함되어 있습니다.
아직 버전 2.x를 실행하고 있다면 이 저장소의 v2 분기를 살펴보세요 .
저는 ElasticSearch의 기능과 강력한 성능을 보여주기 위해 여러 가지 예를 준비했습니다. 많은 정보는 "ElasticSearch, The Definitive Guide"를 기반으로 합니다.
여기에서 ElasticSearch 및 Kibana를 다운로드한 후 다음의 간단한 단계를 따르세요.
./bin/elasticsearch
실행./bin/kibana
연습 1은 매우 간단하며 목표는 ElasticSearch RESTFul 인터페이스를 익히는 것입니다.
주제:
부하 운동 1
연습 2에서는 많은 데이터를 색인화할 것입니다. 성능을 향상시키기 위해 이 작업을 대량으로 수행하고 있습니다.
이 데이터에는 Combell 블로그의 정보가 포함되어 있습니다. 다음 정보를 색인화했습니다.
이 데이터는 다른 연습에서 사용됩니다.
블로그 데이터를 대량으로 로드
연습 3에서는 ElasticSearch 쿼리 DSL을 사용하여 몇 가지 기본 쿼리를 수행합니다. DSL은 JSON 기반이며 쿼리는 전체 텍스트 검색입니다.
우리가 수행하고 있는 몇 가지 검색은 다음과 같습니다.
부하 운동 3
연습 4에서는 전체 텍스트와 인간 언어 분석에 중점을 둘 것입니다. ElasticSearch의 데이터베이스 기능을 무시하고 여기에 텍스트를 던져보고 데이터를 토큰화하는 방법을 살펴보겠습니다.
사용하는 분석기에 따라 ElasticSearch는 다른 방식으로 데이터를 토큰화하고 저장합니다. 걱정하지 마십시오. 원본 데이터는 문서 소스에 남아 있으며 변경되는 것은 반전된 인덱스입니다.
부하 운동 4
연습 5는 인덱스 스키마에 관한 것입니다. ElasticSearch는 스키마가 없는 것으로 판매됩니다. 실제로 ElasticSearch는 사용자를 위해 스키마를 추측합니다.
성공적으로 추측한 예와 그렇지 않은 예를 보여 드리겠습니다.
부하 운동 5
ElasticSearch가 스키마를 잘못 추측하는 것을 방지하려면 명시적인 매핑이 좋은 생각입니다. 연습 6에서는 블로그 예제에 적합한 매핑을 설정하고 데이터를 다시 삽입합니다.
정수와 문자열은 그에 따라 정의되며 날짜는 올바른 형식을 갖습니다.
명시적 매핑은 연습 7에서 사용됩니다.
부하 운동 6
실패한 연습 5의 2개 검색이 이제 다시 실행됩니다. 명시적인 매핑 덕분에 출력이 정확해집니다.
부하 운동 7
연습 8에서는 블로그 인덱스에 또 다른 매핑을 정의합니다. 이 매핑은 "제목" 필드만 전체 텍스트로 처리합니다. 나머지 문자열은 분석 및 토큰화되지 않습니다. 해당 파일은 "있는 그대로" 저장됩니다.
이 데이터는 연습 9에서 사용됩니다.
부하 운동 8
연습 9에서는 쿼리를 사용한 전체 텍스트 검색과 필터 모드에서 쿼리를 사용한 정확한 값 일치 간의 차이점을 보여 드리겠습니다.
연습 8에서 수행된 매핑을 통해 이제 제목 속성에 "키워드" 필드가 있는지 확인했습니다. 즉, "title" 에 대한 쿼리는 전체 텍스트 검색으로 처리되고 일반 "title.keyword" 필드에 대한 부울 필터는 정확한 값 일치로 처리됩니다.
예제 중 하나에서는 여러 쿼리와 필터를 결합하는 방법도 보여 드리겠습니다.
이 연습에서는 다음 작업을 수행합니다.
부하 운동 9
데이터를 다시 매핑하겠습니다. 이번에는 "title" 속성을 분석된 필드로 다루겠습니다. 기본적으로 "표준" 분석기가 사용됩니다. 데이터가 네덜란드어와 영어로 되어 있기 때문에 필드 2개를 추가했습니다.
이것이 매핑의 최종 버전입니다. 다른 예에서는 이 매핑과 데이터를 사용합니다.
부하 운동 10
연습 11은 언어를 기반으로 한 텍스트 분석에 관한 것입니다. 연습 4는 데이터 분석에 대한 힌트였습니다. 이제 실제로 언어 분석에 따른 검색을 수행해 보겠습니다.
부하 운동 11
연습 12에서는 벨기에의 West-Vlaanderen 지방에 위치한 모든 도시를 포함하는 새로운 "도시" 인덱스를 생성합니다. 색인에는 도시 이름과 지리 좌표가 저장됩니다.
명시적 매핑과 데이터는 다른 연습에서 사용됩니다.
부하 운동 12
이전 연습에서는 새 색인을 생성하고 일부 지리 데이터를 색인화했습니다. 연습 13에서는 실제로 이 데이터에 대한 검색을 수행해 보겠습니다.
2개의 쿼리가 표시됩니다.
부하 운동 13
연습 14에서는 또 다른 인덱스에 데이터를 로드합니다. 이 지수는 '자동차' 라고 불리며 자동차 판매 정보가 포함되어 있습니다. 모든 거래는 다음 정보를 추적합니다.
이 정보는 연습 15에서 사용됩니다.
부하 운동 14
집계는 ElasticSearch의 매우 강력한 기능입니다. 기본적으로 SQL의 "그룹화"와 비슷하지만 훨씬 더 강력합니다. 집계는 ElasticSearch가 빅 데이터 및 데이터 과학 커뮤니티에서 인기를 끄는 이유입니다.
이 연습에서 실행할 집계는 다음과 같습니다.
부하 운동 15