Skip to content

CodeCraft Hub

Elasticsearch 기본활용

Big Data1 min read

...

특징

  • java application이고 구동시 시간이 걸린다. 리소스 사용이 인텐스하다. 서버 사양이 좋아야 한다.
  • ELK 스택을 이용하여 로그 분석툴로 많이 사용된다.
  • 역색인(Reverse Indexing)을 통해 검색이 상당히 빠르다.
  • NoSQL 인데 Full Text 검색이 가능하다.
  • 검색엔진을 위한 솔루션이지만 잘 만 사용한다면 메인 DB로도 사용가능하지만 만약을 위해 메인 DB를 구성하고 혼용하는것이 옳아 보인다.
  • 머신러닝 활용을 위한 정제된 데이터 저장소로도 활용가능하다.

개발 환경 설치

  • docker 에 올려서 사용해 본다.
  • 프로덕션시에는 docker swarm으로 클러스터 구성해서 여러개의 노드로 분선처리한다.

프로덕션시 주의사항

참조

  • java heap size 세팅 호스트 메모리의 50% 정도가 적당하다.
  • vm.max_map_count는 최소 262144로 호스트 마다 세팅 되어야 한다.
  • docker swarm 클러스터 구성시 데이터를 위한 공유볼륨을 만들어 줘야한다. (예. nfs volume)

알아야할 용어

ESRDBMS
IndexDatabase
Type (deprecated from ver. 6?)Table
DocumentRow

docker service 구성

docker-stack.yml

elasticsearch.yml

kibana.yml

Rest API

공식 문서

indexing

mapping

  • Document생성시 index가 없다면 자동으로 생성되면서 각 feild마다 mapping이 sub field를 가진 기본 mapping이 세팅된다. 이는 필요없는 용량을 차지하게 된다.
  • 한번 세팅되어진 mapping은 수정이 불가하기 때문에 index생성시 mapping을 해줘야 한다.

Reindex

  • index의 remapping이 필요할때 새로운 mapping으로 새로운 index를 만들어서 reindex하여 데이터를 가져온다.

Bulk indexing

Pagenation

  • from, size 속성값으로 페이지네이션 구현이 가능하다.
  • 기본값은 size; 10, from: 0
  • 단 from을 설정하더라도 문서를 처음 부터 읽으면서 찾기 때문에 많은 페이지 구현은 서버에 부담이 된다.

검색 기본

공식문서

  • 모든문서
  • query context (scored)
    • match
    • match_phrase_prefix

고급검색

  • analyzer, tokenizer를 이용하여 동의어 검색, 오타수정, 제시어 등등에 활용될 수 있다.

  • 한글검색은 3rd-party 검색기를 사용해야한다. 1

  • To create index with analyzer setting

  • To search

Elasticsearch client libraries

공식문서


  1. 한글자동완성 가이드를 참조하세요.
© 2024 by CodeCraft Hub. All rights reserved.
Powered by Gatsby