Elastic Stack 및 Elasticsearch에 대한 아이디어

(2020 년 4 월 10 일 )

Elasticsearch 및 ELK Stack에 대한 간략한 소개입니다. 이유 및 방법.

ELK https : //aasconsultants.files.wordpress.com/2019/03/elk.png

역사

Elastic NV는 2012 년 암스테르담에서 설립 된 회사이며 Shay Banon 은 Elasticsearch의 창립자입니다. 그의 첫 번째 반복은 Compass라고 불 렸습니다. 두 번째는 Elasticsearch (Apache Lucene가 내부에 있음)였습니다. 그는 오픈 소스 Elasticsearch를 사용하고 #elasticsearch IRC 채널을 만들고 사용자가 나타날 때까지 기다렸습니다. 반응이 인상적이었습니다. 사용자는 자연스럽고 쉽게 사용했습니다. 채택이 지붕을 뚫고 커뮤니티가 형성되기 시작했고 사람들이 알아 차 렸습니다. Steven Schuurman, Uri Boness, Simon Willnauer입니다. 그들은 함께 검색 회사를 설립했습니다.

Elastic Stack이란 무엇입니까?

Elastic Stack은 ELK 스택이라고도합니다. 기본적으로 3 개의 오픈 소스 프로젝트가 포함되어 있습니다.

  1. Elastic Search -검색 및 분석 엔진 .
  2. Logstash ‑ 데이터 처리 파이프 라인
  3. Kibana- 데이터를 시각화하는 대시 보드

이 세 가지 모두 고유 한 의미가 있으며이 세 가지를 결합하여 데이터 분석 및 분석을받을 수 있습니다.

왜 필요한가요?

설문 조사에 따르면 Facebook은 매일 4 페타 바이트의 데이터를 생성합니다. 즉 4,000 만 GB . 데이터, 이제는 데이터의 세계입니다. 따라서 데이터를 분석하는 시스템이 필요합니다.

잠깐 !! 그게 무슨 뜻입니까? 분석.

이해해야 할 두 가지 용어가 있습니다.

  1. 분석- 분석 부분에서는 과거 데이터 또는 보유한 기존 데이터에서 결과를 얻을 수 있습니다.
  2. Analytics- 사용자 요구 사항을 예측하려는 경우 비즈니스 명확성을 높이고 데이터 패턴을 이해하기 위해 그래프 기반 시각화를 원합니다.

이 두 가지 가장 중요한 도구는 모든 사업. 데이터 를 통해이를 달성 할 수 있습니다. 그리고이 두 가지의 도움으로 비즈니스를 성장시키고 비즈니스 통찰력을 명확하게 할 수 있습니다.

이제 어떻게? 이 대용량 데이터를 짧은 시간에 분석하는 것은 쉬운 일이 아니기 때문입니다.

과제 및 솔루션

대기업은 다양한 형식의 데이터를 다른 곳에서 가져옵니다. JSON 또는 XML이 될 수 있습니다. 따라서 전체 데이터를 한 곳에서 한 형식으로 가져 오려면 하나의 메커니즘이 필요합니다. 이를 위해 Logstash 를 사용합니다.

이제 데이터를 가져 오면 데이터를 정렬해야합니다. 체계적인 순서로 매우 쉽게 평가할 수 있습니다. 또한 데이터를 분석하려고합니다.이 경우 먼저 데이터를 매우 빠르게 처리합니다. 이를 위해 Elasticsearch가 있습니다. Elasticsearch는 Java로 개발되었으며 Apache 라이선스 .

이제이를 완료 한 후에는 데이터 분석을 보여줄 수있는 시각화 플랫폼이 필요합니다. Kibana 가 그림에 나타납니다. 이것이 전체 Elastic 스택이 작동하는 방식입니다. 더 나은 비즈니스 통찰력 .

프로세스 https://hackernoon.com/hn-images/1*Tvmj3XsqH4hJLvXnfm6sZQ.png

Elasticsearch, Logstash 및 Kibana 설정

먼저 해당 링크에서 세 가지 오픈 소스 소프트웨어를 다운로드하겠습니다 [ elasticsearch ], [ logstash ] 및 [ kibana ]. 파일 압축을 풀고 프로젝트 폴더에 세 개를 모두 넣습니다.

시작하겠습니다.

1 단계 — 로컬 시스템에 Kibana 및 Elasticsearch를 설정합니다. Kibana의 bin 폴더에서 다음 명령으로 Kibana를 실행합니다.

bin\kibana

마찬가지로 Elasticsearch는 다음과 같이 설정됩니다.

bin\elasticsearch

이제 두 개의 별도 터미널에서 두 모듈이 모두 실행중인 것을 볼 수 있습니다.서비스가 실행 중인지 확인하기 위해 Kibana의 경우 localhost : 5621 localhost : 9600 Elasticsearch 용.

여기에서 탄력적 스택을 설정할 준비가되었습니다. 이제 localhost : 5621로 이동하여 여기 콘솔에서 개발 도구를 엽니 다. Elasticsearch 쿼리를 작성할 수있는 곳입니다.

Kibana 콘솔

이번에는 Elasticsearch에 대해 자세히 설명하겠습니다. 이제 Elasticsearch가 정확히 어떻게 작동하는지 살펴 보겠습니다.

Elastic 검색

Elastic Search 작동

작업을 시작하기 전에 데이터를 인덱싱해야합니다. Elasticsearch에서 색인이 생성되면 사용자는 데이터에 대해 복잡한 쿼리를 실행하고 집계를 사용하여 데이터의 복잡한 요약을 검색 할 수 있습니다. Elasticsearch는 데이터를 JSON 문서 로 저장하고 Datastrucre를 inverted index : 매우 빠른 전체 텍스트 검색을 허용하도록 설계되었습니다 . 역 색인은 문서에 나타나는 모든 고유 단어를 나열하고 각 단어가 발생하는 모든 문서를 식별합니다.

더 나은 이해를 위해 Elasticsearch를 여러 주제로 나눕니다.

  1. 문서 관리
  2. 매핑
  3. 분석
  4. 검색 방법론
  5. 집계 및 필터

Elasticsearch의 가장 중요한 측면은 아키텍처를 이해하는 것입니다.

클러스터

Elasticserach에서는 데이터를 노드에 저장합니다. 머신에는 n 개의 노드가있을 수 있습니다. 그리고 각 노드는 클러스터와 관련이 있습니다. 따라서 클러스터는 노드 집합입니다 .

문서

데이터를 JSON 개체 인 문서 로 저장합니다. 그렇다면 이러한 데이터가 클러스터에서 어떻게 구성됩니까? 대답은 인수 입니다.

관계형 데이터베이스 세계에서 문서는 테이블의 행과 비교할 수 있습니다.

인덱스

Elasticsearch 인덱스는 문서의 논리적 파티션입니다. 및 관계형 데이터베이스 세계의 데이터베이스와 비교할 수 있습니다.

유형

각 인덱스에는 문서를 논리적 그룹으로 나누는 데 사용되는 하나 이상의 매핑 유형이 있습니다. 가능 관계형 데이터베이스 세계의 테이블과 비교할 수 있습니다.

모든 문서는 색인으로 저장됩니다. . 말할 수있는 색인은 문서 모음입니다. 예를 들어, 부서에는 A 인덱스가 있고 직원은 B 인덱스가 있습니다. 즉, 논리적으로 관련되어 있습니다.

샤딩

  1. 샤딩은 인덱스를 분할하는 방법 일뿐입니다.
  2. 각 조각을 샤드라고합니다.
  3. 샤딩은 인덱스 수준에서 수행됩니다.

샤드는 인덱스. 확장 성을 위해. 샤딩을 사용하면 하나의 인덱스에 수십억 개의 문서를 저장할 수 있습니다. 복제본도 있지만 지금은 Elasticsearch를 시작하고 이해하는 것으로 충분합니다.

이제 구축 및 검색 엔진으로 더 나아가겠습니다.

1. 문서 관리

그 전에 Elasticserach 패키지 관리자를 가져옵니다.

npm i elasticsearch

단계 -1- 다음을 수행하여 애플리케이션을 Elasticsearch에 연결합니다.

연결

2 단계-색인 생성 예 : 색인을 다음과 같이 생성합니다. gov.

색인 생성

3 단계-이제 색인 gov에 문서를 추가하고 색인 gov에는 선거구라는 유형이 있습니다. .

gov라는 데이터베이스가 있고 테이블이 구성원이므로 관련 될 수 있습니다.

문서 추가

2. 매핑

매핑은 문서 및 해당 필드를 정의하는 프로세스입니다. RDBMS에서 테이블 스키마를 정의하는 것과 같습니다.

4 단계-이제 gov 유형 구성 요소를 색인화하기위한 매핑을 정의합니다.

매핑

3. 분석

텍스트 분석 은 다음과 같이 구조화되지 않은 텍스트 를 변환하는 프로세스입니다. 이메일 본문 또는 제품 설명을 검색에 최적화 된 구조화 된 형식으로 변환합니다.

Elasticsearch는 색인 생성 또는 검색시 텍스트 분석을 수행합니다.

text 필드 . 매핑에서 정의했습니다. 이것이 검색 엔진의 핵심 요소입니다.

기본적으로 Elasticsearch는

standard 분석기를 사용합니다. / a> 모든 텍스트 분석을 위해. standard 분석기는 대부분의 자연어 및 사용 사례에 대해 즉시 사용 가능한 지원을 제공합니다. . standard 분석기를있는 그대로 사용하기로 선택한 경우 추가 구성이 필요하지 않습니다. 나만의 맞춤형 분석기를 만들 수도 있습니다.

4. 검색 방법론

Elasticsearch에 적용 할 수있는 다양한 유형의 쿼리가 있습니다. 그에 따라 결과를 얻을 수 있습니다. 여기에서는 쿼리의 기본 예를 보여 드리겠습니다.

모든 문서와 일치하는 가장 간단한 쿼리입니다.

검색어

검색어

복합 쿼리는 결과와 점수를 결합하거나 동작을 변경하거나 쿼리에서 필터 컨텍스트로 전환하기 위해 다른 복합 또는 리프 쿼리를 래핑합니다.

여러 리프 또는 복합 쿼리 절을 결합하기위한 기본 쿼리 (예 : must, should, must\_not 또는 filter 절. mustshould 절에는 점수가 결합되어 있습니다.

전체 텍스트 쿼리를 사용하면 이메일 본문과 같은 분석 된 텍스트 필드 를 검색 할 수 있습니다. 쿼리 문자열은 인덱싱 중에 필드에 적용된 것과 동일한 분석기를 사용하여 처리됩니다. 입력 내용을 분석합니다. 주어진 입력이 정확하지 않지만 여전히 정확하다면 결과를 얻을 수 있습니다.

Elasticsearch와 같은 분산 시스템에서 전체 SQL 스타일 조인을 수행하는 것은 엄청난 비용이 듭니다. 대신 Elasticsearch는 수평으로 확장하도록 설계된 두 가지 형태의 조인을 제공합니다.

1.

nested 쿼리

2.

has\_child

has\_parent 쿼리

이 그룹에는 다른 그룹에 맞지 않는 쿼리가 포함되어 있습니다. 본질적으로 유사한 문서, 고정 된 쿼리도 더 많이 있습니다. 문서 를 확인하세요.

정확도를 기반으로 문서를 찾기위한 용어 수준 쿼리 구조화 된 데이터의 e 값. 구조화 된 데이터의 예로는 기간, IP 주소, 가격 또는 제품 ID가 있습니다.

전체 텍스트 쿼리와 달리 용어 수준 쿼리는 검색어를 분석하지 마십시오. 대신 용어 수준 쿼리는 필드에 저장된 용어와 정확히 일치합니다. 전체 텍스트 첫 번째에서와 같이 정확히 일치하는 입력을 찾은 다음 검색하여 용어 수준과 전체 텍스트 쿼리 간의 차이가 큽니다.

5. 집계 및 필터

필터 컨텍스트에서 쿼리 절은 “이 문서가이 쿼리 절과 일치합니까? “질문에 대답합니다. 대답은 간단히 예 또는 아니오입니다. 점수가 계산되지 않습니다. 필터 컨텍스트는 대부분 구조화 된 데이터를 필터링하는 데 사용됩니다. 예 :

  • timestamp 이 2015 년 범위에 속합니까? 2016 년까지?
  • status 입력란이 ?

자주 사용되는 필터는 Elasticsearch에 의해 자동으로 캐시되어 성능이 향상됩니다.

필터 컨텍스트는 쿼리 절이 filter 매개 변수 (예 :

boolfilter 또는 must\_not 매개 변수) / div> 쿼리,

constant\_score 쿼리의 filter 매개 변수 또는

filter 집계 .

집계를 사용하면 RDBMS 에서처럼 복잡한 쿼리를 사용하여 Avg, Sum 및 많은 데이터 통찰력을 찾을 수 있습니다.

요약

  1. Elastic Stack이란.
  2. ELK 작동 방식
  3. Elasticsearch 란 무엇이며 작동합니다.
  4. 일부 기본 쿼리

다음 단계 !!

다루어야 할 거대한 주제이므로. 하지만 ELK와 Elasticsearch에 대해 간략하게 소개하려고 노력했습니다. 다음으로 Elasticsearch를 사용하여 애플리케이션과 같은 자체 검색 엔진을 구축하겠습니다. 여기서 코딩 부분도 다룹니다. 파일 구조 및 기타 사항을 유지하는 방법.

결론

Elastic Stack은 배워야 할 매우 중요한 기술입니다. 이를 모든 프로젝트에 적용하고 ELK 스택은 로그 분석 도구로 가장 일반적으로 사용됩니다 . 그 인기는 여러 소스에서 데이터를 집계하는 안정적이고 상대적으로 확장 가능한 방법을 제공한다는 사실에 있습니다. 여전히 많은 것이 남아 있지만 그 이후에도 Elasticsearch로 시작할 수 있습니다. 문서 를 살펴 보시기 바랍니다. 질문이 있거나 내용에 이상이 있으면 댓글을 남겨주세요.

감사합니다 🙂