Elastic search

SungMin·2023년 2월 6일
0

Sesac-Database

목록 보기
3/3

Elastic search 설치

  • 오른쪽에서 kibana 선택

  • elastic, kibana 다운로드 클릭

  • 오른쪽 view past release 선택(오픈 소스 버전 이용)

  • 7.16.3 버전 다운로드

  • windows 선택

  • 받은 압축파일을 c:에 압축해제(다른 경로도 괜찮으나 최대한 단순한 경로에 둘 것)

  • cmd 두 개를 실행해서 각각의 경로로 들어감

  • 폴더 내의 elasticsearch.bat을 실행해준다.

  • 프롬프트가 작업을 수행하고 나면 주소값을 찾아준다.

  • 경로에 들어가서 값이 출력되는지 확인한다.

클라이언트 통신은 9200, 노드 통신은 9300이 디폴트값이다.
https://esbook.kimjmin.net/02-install/2.3-elasticsearch/2.3.2-elasticsearch.yml

  • kibana도 동일하게 bat을 실행해준다.

  • 중간에 실행이 잘 되지 않을 경우에는 압축 풀기가 제대로 되지 않았을 수 있으므로 폴더를 지우고 다시 실행한다.

  • ip주소로 접속해서 실행되는지 확인한다.

  • 왼쪽 메뉴 하단의 Dev tools로 들어간다.

  • 내용을 작성한다.

Elastic search 설명

구성 요소

  • ELK stack

  • Kibana : 데이터 시각화

  • Elastic search : 저장 & 불러오기 & 검색

  • Log stash : 분산형 데이터 수집 및 변환(서버 로그 등)

  • Beats : 엣지 데이터 수집

필요성

  • SQL, col1, kim, lee, park

  • park -> (bark, pack등의 유사 어휘) -> 엘라스틱 서치를 쓰지 않아도 동의어를 추가해 줄 수도 있다. 그래서 필수는 아니다.

  • 박씨를 찾자 => select * from where col1 = 'park';

  • 박씨를 찾자 => select * from where col1 like 'pa%';

  • 예전엔 오픈소스였지만 이젠 유료화되었기에, 다른 대안을 생각해두는 것이 필요하다.

aws와 elastic은 예전에 분쟁을 벌이고 다른 길을 가게 되었다. 자세한 내용은 아래 링크 참조
https://blog.outsider.ne.kr/1533

DB의 종류

  • RDBMS(관계형 데이터베이스) : Mysql, MariaDB, Oracle DB (table 기반)
  • OBJDB(객체형 데이터베이스) : NoSQL, Mongo DB, 행과 열의 table방식이 아닌 데이터베이스, json -> 하나하나의 데이터 처리엔 좋아지지만 전체적 조회와 데이터간 관계를 보기 힘들다.
  • Elastic search : own storage type. 어느 분야에 속한다고 정확히 정하긴 힘들다. DB도 아니고 엔진도 아니고 NLP도 아님.

매핑 방식

  • 다이나믹 매핑: 자동으로 타입을 결정
  • 명시적 매핑 : 수동으로 타입을 결정

코드 작성 실습

GET _search
{
  "query": {
    "match_all": {}
  }
}


get _cat/indices

put index1

put index2/_doc/1
{
  "name":"mike",
  "age":25,
  "gender":"male"
}

get index1

get index2

get _cat/indices

put index2/_doc/1
{
  "name":"katty",
  "age":24,
  "hobby":"napping"
}

get index2

delete index1

get _cat/indices

get index2/_doc/1

get index2/_doc/2

get index2/_search

# in sql : insert select update      delete
# in es  : put    get    (x, update) delete
# 도큐멘트 수정은 구현이 어렵거나 비싸다. 그냥 덮어쓰기 수행

put index2/_doc/1
{
  "name":"park",
  "age":45,
  "gender":"male"
}

get index2/_doc/1

POST index2/_update/1
{
  "doc":{
    "name":"lee"
  }
}

delete index2/_doc/2

get index2/_search
profile
초보 개발자의 학습 저장용 블로그

0개의 댓글