Spark Elasticsearch이란무엇입니까?

火花Elasticsearch는NoSQL분산형데이터베이스의일종으로문서중심적반정형데이터를저장하고검색하고관리합니다。이데이터베이스Apache Lucene기는반GitHub오픈소스RESTful검색엔진이며Apache许可약관에따라릴리스되었습니다。Elasticsearch Java기는반이기때문에여러가지다양한형식으로문서파일을검색및인덱싱할수있는수많은플랫폼에서이용할수있습니다。Elasticsearch에저장된데이터는NoSQL데이터베이스와유사하게스키마리스(非模式化)JSON문서형식을취합니다。

火花Elasticsearch프로세스를보여주는이미지Elasticsearch로‘日志’라는단어가있는文档에서시작하여收集&变换的으로이동한다음的搜索和分析로갑니다。그리고마지막으로Kibana를사용하여可视化和管理로진행합니다。

Elasticsearch의역사및소개

弹性堆栈이라고알려진오픈소스툴로구성된더큰툴세트의한구성요소인Elasticsearch는원래谷歌大脑团队의엔지니어들이설계하여개발한널리사용되는풀텍스트(全文)검색엔진입니다。Elasticsearch는Reddit부텨Youtube그리고eBay까지많은상용애플리케이션에서널리사용됩니다。많은기업에게텍스트기반검색은비즈니스프로세스의필수소가되었습니다。Elasticsearch는다른검색엔진과유사합니다。

Elasticsearch와다른검색엔진의주요차이점중하나는Elasticsearch가분산된데이터를저장하고관리할수있다는것입니다。다시말해,Elasticsearch는끊임없이크기가변하는데이터를처리하도록설계되었습니다。이덕분에데이터세트의크기가아무리크더라도매우복잡한쿼리를수행할수있습니다。그러나하나의데이터베이스서버가여러사용자의데이터를처리해야하므로이로인한잠재적영향이상당히증가할수있습니다。

Elasticsearch는누가사용합니까?

수천개의상위기업들이온라및오프라데이터를위해Elasticsearch를사용합니다。그예로는谷歌、甲骨文、微软와같은빅테크외에도많은유명기업들이있습니다。

그러나빅테크만정형데이터를인덱싱하는손쉬운방법을사용할수있는것은아닙니다。이러한방법이존재한다는것을알고그작동원리를이해하기만하면됩니다。

그런데정확히무엇을위해Elasticsearch가사용되나?

Elasticsearch는다음과같은다양한사용사례에사용됩니다。

  • 로깅및로그분석:Elasticsearch는보완적오픈소스소프트웨어및플랫폼으로구성된에코시스템덕분에구현과확장이가장쉬운로깅솔루션중하나가되었습니다。
  • 공개데이터스크레이핑및조합:Elasticsearch에는여러가지데이터소스를모두관리할수있고검색할수있는상태로보관하는데필요한유연성이있습니다。
  • 풀텍스트검색:ElasticSearch는문서중심적입니다。문서를저장하고덱싱한다는뜻입니다。덱싱은문서를생성하거나업데이트하는작업을말합니다。인덱싱이완료되면전체문서를검색,정렬,필터링할수있습니다(여러행의열형식데이터가아님)。
  • 이벤트데이터와메트릭:Elasticsearch는메트릭과애플리케이션이벤트와같은시계열데이터에적합한것으로알려져있습니다。어떤기술을사용하든,ElasticSearch에일반적인애플리케이션에서손쉽게데이터를가져오는데필요한구성요소가있을것입니다。그리고드문경우지만필요한구성요소가없다고해도그러한기능을무척쉽게추가할수있습니다。

Elasticsearch아키텍처:주구성소

火花Elasticsearch의작동원리와이검색엔진을사용해야하는경우,그리고사용하지않아야하는경우를이해하려면,먼저Elasticsearch아키텍처를뒷받침하는인프라를이해해야합니다。그핵심구성요소는Elasticsearch클러스터,포트9200및9300 Elasticsearch샤드부터Elasticsearch복제본,분석기및문서까지다양합니다。

Elasticsearch클러스터

Elasticsearch클러스터는상호연결된컴퓨팅노드의그룹입니다。이노드는모두서로다른클러스터데이터조각을저장합니다。사용자는구성폴더에서찾을수있는"elasticsearch。yml”파일을변경하여각클러스터가실행하도록할당된노드수를조정할수있습니다。원하는만큼많은노드를실행하는것이가능하지만,대부분의사용자는일반적으로원하는결과를얻기위해노드를하나만사용해도충분하다는것을알게됩니다。

Elasticsearch노드

Elasticsearch노드는데이터베이스검색,인덱싱및스케일링을위해특별히튜닝된컴퓨팅리소스입니다。Elasticsearch는분산데이터베이스이므로단일정보출처를사용하며이출처는모든데이터를보관하는Elasticsearch데이터노드입니다。클러스터의각노드는다른이름을사용합니다。일반적으로Elasticsearch노드의각인덱스에는만약1000 ~ 5000만개의문서가있습니다。

포트9200및9300

Elasticsearch샤드에서는두가지유형의포트를사용할수있습니다。이두샤드포트중첫번째는항상열려있고,두번째샤드포트는Elasticsearch인덱스가생성되고클러스터가초기화되는경우에만열립니다。9200年은기본샤드에사용되는기본포트이고,9300은그복제본에사용되는기본포트입니다。

Elasticsearch샤드

Elasticsearch샤드는하나의인덱스안에있는Kibana인덱스들의집합입니다。Elasticsearch에는Elasticsearch문서(doc)및Elasticsearch인덱스라는두가지유형의인덱스가있습니다。문서는고유한이름이있는식별자와덱스에의해바딩됩니다。

Elasticsearch복제본

복제본은샤드의복사본으로,모든변경사항은보조복제본에반영되지만클라이언트에게는투명한상태로남아있습니다。기본복제본은새데이터가추가되거나삭제,업데이트또는변경되는경우자동으로업데이트됩니다。

Elasticsearch분석기

분석기는데이터베이스에서데이터를가져와분석을수행하는Elasticsearch클러스터의일부로사용자에게반환된데이터의필터링및정렬을가능하게합니다。

Elasticsearch문서

Elasticsearch문서는Elasticsearch의기본덱스유형입니다。각문서는데이터세트에서id로서생성되며,문서유형당하나의열이있습니다。Elasticsearch문서ID의간단한예는{doc ID}입니다。일반적으로Elasticsearch클러스터의각문서에는샤드ID,이름,그리고일련의인덱스가있으며,모든필드에는샤드전체에적용되는자체식별자가있습니다。

Elasticsearch는어떻게작동하나mp3 ?

간단히말해,Elasticsearch는데이터를클러스터의모든노드에게시한후현재저장되는데이터의양에따라데이터를확장및축소합니다。Elasticsearch는탄력적인인덱스컨테이너를사용하여하나의데이터베이스에모든데이터를저장할수있는기능을유용하게활용합니다。

Elasticsearch는문서중심의RESTful검색엔진이기때문에다양한유용한툴이있으며,대규모의데이터세트로작업할수있습니다。Elasticsearch가없다면이러한대규모데이터세트는감당하기가벅찰것입니다。또한이소프트웨어는다른소프트웨어와함께보완적툴로사용할수있습니다。그 예로는Elasticsearch + Spark가있습니다。

Elasticsearch쿼리의예

여러분이“电信”라는단어를검색한다고가정해보겠습니다。다음과같은간단한검색구문을사용하면해결됩니다。

“电信”美元

Elasticsearch는문서를사용하므로문서의목록을검색할수는없습니다。“문서유형”을쿼리해야합니다。검색기준을충족하는문서만검색되도록하기위해”类型:电信“라는구문을사용하겠습니다。

이쿼리를수행하기위해문서id번호를쿼리매개변수로전달합니다。

类型:电信“美元

이를추가로테스트하려면다음명령을실행하여간단한예시문서를만들수도있습니다。

创建索引:type:telecommunications创建分区:type:telecommunications——data-urlencode /tasks——data-urlencode tasks/

Elasticsearch는어떤유형의데이터베이스를사용합니까?

Lucene Elasticsearch툴은인덱싱빌드를견고한분산데이터베이스모델과결합하여데이터를샤드라고하는작은구성요소로쪼개어여러노드에분산시킬수있습니다。

그러면Elasticsearch는어디에데이터를저장하나?

Elasticsearch에저장된데이터는JSON형식이나CSV형식입니다。모든덱스에는덱스에저장된문서를위한자체템플릿이있습니다。덱스는보조복제와통신하기위해메시지버스를사용하여완전히복제됩니다。로그파일은Elasticsearch덱스로작성됩니다。

이러한문서는”memcached设置“이라는데이터구조에일련의키——값쌍으로저장됩니다。memcached设置은확장가능한경량저메모리(内存)데이터구조이며,큰메모리볼륨으로데이터를보관하고처리할수있습니다。

파일이정기적으로디스크에작성되면서Elasticsearch의스토리지는수집,인덱싱,검색작업에최적화됩니다。사실,인덱스의크기를변경하는유일한방법은마지막으로삽입된문서를삭제하고이를새문서로교체하는것입니다。이작업을“데이터마이그레이션”이라고부릅니다。이는새문서를새marketing덱스로부터만들고,업데이트한다음재삽입하는것을말합니다。

Elasticsearch집계란무엇입니까?

Elasticsearch집계,즉동일한클러스터를여러엔드포인트에배정하는것은프로덕션클러스터의성능에영향을주지않고추가적인데이터와기능에동일한Elasticsearch클러스터를사용할수있게해주는강력한기능입니다。클러스터를집계할때각노드에는세가지워크로드유형중하나가할당됩니다。이세가지워크로드유형은아래와같습니다。

  1. 비관계형
  2. 온라트랜잭션처리(oltp)
  3. 온라분석처리(olap)

비관계형

Elasticsearc가생성하는모든네트워크요청은Elasticsearch클러스터에실행되는쿼리에의해생성됩니다。

Elasticsearch노드가유휴상태인경우,백그라운드스레드에서쿼리를실행하고결과에대해지속적으로보고하는일은운영체제의책임입니다。Elasticsearch노드가사용중인경우에는(노드장애발생시)페일오버메커니즘에참여하거나(노드과부하발생시)쿼리요청을다수의다른노드에게전달하고다른노드중하나를사용할수있을때까지기다립니다。

Elasticsearch가생성한네트워크트래픽은대부분의경우쿼리와관련된데이터이지만,Elasticsearch를활용할수있는다른상황도많습니다。

OLTP

여전히Elasticsearc가생성하는모든네트워크요청은Elasticsearch클러스터에실행되는쿼리에의해생성됩니다。

대규모시스템에(좋은시작을위해)Elasticsearch클러스터만사용할수있지만,Elasticsearch를관계형데이터소스와결합하는것이바람직한경우가있습니다。이런경우,Elasticsearch는처리를위해보조관계형데이터소스에대해실행되며,실행한쿼리의일부만을추적합니다。이시나리오에서는각노드에하나의보조소스만할당되며,나머지는유휴상태로남아있습니다。

OLAP

Elasticsearch집계와일반적인집계의주된차이점은,일반적인집계는여러가지목적으로동일한Elasticsearch클러스터를사용할수있지만Elasticsearch집계는집계된데이터를저장하고처리하기위해보조데이터소스를사용한다는것입니다。이를통해Elasticsearch집계는SQL또는NoSQL데이터세트와같은기본데이터세트에추가적인쿼리를수행하지않고더많은데이터를저장할수있습니다。

Elasticsearch를설치하고사용하는방법

설치는꽤간단합니다。Elasticsearc의기본리포지토리를사용하고Elasticsearch를위한기본환경을설정할수있습니다。

Elasticsearch는구성을위해Kibana。Yml이라는구성파일을사용하며필에따라이파일을수정할수있습니다。또한InfluxDB, Logstash등더널리사용되는Elasticsearch플러그인공급자중한곳을이용할수도있습니다。

Elasticsearch설치단계:

  1. Elasticsearch Development버전및서버를설치하고종속항목을설치
  2. Java용BOSH扩展설치。波什확장자를사용하면사용자와데이터조작툴이데이터에더쉽게액세스하고읽을수있도록Elasticsearch용HTML템플릿을작성하는데도움이됩니다。BOSH확장자에는Java런타임이필합니다。운체제에서Java용기본리포지토리를사용하여이런타임을설치할수있습니다。
  3. Elasticsearch실행
  4. BOSH용Java플러그설치
  5. 이제다됐습니다。Elasticsearch가머신에서작동중이고읽기쉬운방법으로모든데이터에액세스할수있습니다。

ElasticSearch데이터시각화

Elasticsearch를이용하면단순한API하나만가지고온갖종류의데이터를검색하고필터링할수있습니다。이를RESTful API이라고하며,이것은데이터분석에만사용할수있는것이아니라웹기반애플리케이션제작에도사용할수있습니다。현재Elasticsearch에는패싯검색도포함되는데,이것은집계된형태의데이터를컴퓨팅하는기능입니다。주기능을몇가지만소개하면다음과같습니다。

  • 확장할수있는검색솔루션을제공합니다。
  • 실시간에가깝게(接近实时)검색을수행합니다。
  • 멀티테넌시지원을제공합니다。
  • 백업프로세스를간소화하고데이터무결성을보장합니다。
  • 서버가다운되는경우덱스를복원할수있습니다。
  • JSON(Javascript对象表示法)과Java API(应用程序接口)를사용합니다。
  • 자동으로json문서를덱싱합니다。
  • 덱싱에고유한유형수준식별자를사용합니다。
  • 덱스마다개별설정이있습니다。
  • Lucene기반쿼리문자열로검색을수행할수있습니다。

SQL대신Elasticsearch를사용하는이유는무엇입니까?

Elasticsearch서비스는지금까지가장널리도입된강력하고유용한검색기술입니다。대량의데이터를신속하게효율적으로처리해야하는경우Elasticsearch가대부분의SQL검색기술보다눈에띄게더앞서기때문입니다。

Elasticsearch는엔터프라이즈검색용으로특별히설계되어데이터분석에의존하는기업들에게강력한기능과사용하기쉬운툴을제공합니다。그리고리소스를덜사용하면서데이터배치를저장,검색,분석할수있는더실용적이고유연한방법을제공합니다。

Elasticsearch의버전을확하는방법

실행중Elasticsearch의버전을확하는간단한방법은두가지입니다。첫번째는Elasticsearch콘솔을실행하여로그인한후소프트웨어버전을확인하는것입니다。두번째는Elasticsearch의공식문서를확하는것입니다。

Elasticsearch의대이되는시중의주제품3가지

사용할소프트웨어를결정하기전에고려할수있는주대체제품이3가지있습니다。

AWS

AWS (Amazon Web Services)는컴퓨팅인프라를향상하려는스타트업,첨단연구기관및대기업이가장많이선택하는컴퓨팅플랫폼이되었습니다。업계에서가장광범위한클라우드컴퓨팅서비스와함께고객이자체가상서버를사용하고구축하도록지원하는기술을제공하는AWS는微软Azure와谷歌GCP사의이에서소위말하는”클라우드전쟁”을벌이고있습니다。

Solr

Apache Solr Java로는작성된(BSD라이선스기반)오픈소스검색분석엔진데몬이며,가장인기있는오픈소스검색엔진중하나입니다。사실Solr는Twitter,雅虎、亚马逊,eBay易趣및企业와같은세계최대규모의전자상거래사이트와많ㅇㄴ소셜미디어플랫폼에검색기능을지원합니다。

Solr는분산아키텍처를사용하여빠른검색을지원하며,검색엔진이엔터프라이즈가사용하는거의모든스토리지메커니즘과원활하게통합될수있도록고유한통합스토리API를지사용합니다。

ArangoDB

ArangoDB는분산된문서중심적NoSQL데이터베이스로,강력한데이터분석처리성능과사용편의성때문에인기를얻었습니다。SQL과유사한언어가ArangoDB의키——값저장소에서사용되므로사용자는관계형데이터베이스와같은방식으로테이블을만들고,조인하고,쿼리할수있습니다。ArangoDB는모든코드를최신상태로유지하는기능이뛰어나며지원페이지가잘준비되어있습니다。프로젝트가발전하고더많은사람들이참여하게되면,탐색하기쉬운최신형지원페이지가될것입니다。물론,ArangoDB는Python및Javascript와같은모든주요프로그래밍언어와호환됩니다。

가장좋은Elasticsearch툴3가지

데이터를최대한유용하게활용하려면다른툴이나소프트웨어(특히,Hevo数据,Logstash및Apache Nifi)와함께Elasticsearch를사용할것을권장합니다。

Hevo数据

Hevo数据Elasticsearch는Elasticsearch데이터를수집하여쿼리로파싱하고이를클러스터노드에서이벤트로그로실행하는무료오픈소스분산검색엔진입니다。이소프트웨어를사용하면실시간데이터와데이터의백업에대해실시간으로분석쿼리를실행할수있습니다。

Logstash

간단히말해,Logstash는Elasticsearch가추출하자마자들어오는데이터를관리하도록돕는규칙을정의하기위한Elasticsearch툴입니다。Logstash는데이터를즉각적으로처리하므로데이터를최대한유용하게활용하는데완벽한분석과시각화툴을제공합니다。

Apache NiFi

Apache Nifi는여러데이터소스사이의딥링킹(“深层链接”)을가능하게하는라이브러리세트입니다。이러한데이터소스로는Facebook의核心位置的API,의Twitter REST API그리고Yelp의应用功能的API에이르기까지널리사용되는오픈소스API에만국한되지않습니다。Apache NiFi를사용하면사용자는자체API를연결하여데이터세트의모든정보를다양한다른소프트웨어에제공할수있습니다。

Elasticsearch가여러분에게적합할까mp3 ?

Elasticsearch의기능부터인프라그리고아키텍처에대해알아보았으니이제남은일은Elasticsearch가여러분의비즈니스에적합한툴인지결정하는것입니다。

额外的资源

回到术语表