ElasticSearch(ES)란?
- ElasticSearch는 Apache Lucene에서 기반이 되어 구축되어 대량의 데이터를 저장, 분석, 검색을 할 수 있는 검색 및 분석 엔진이다.
- 대용량의 DB 데이터에서 문자열 검색의 속도 및 DB 과부하를 방지하기 위하여 사용
- 대용량의 데이터를 분석하기 위하여 사용
ElasticSearch 구성 요소
1. Document (도큐먼트)
- 실제 데이터를 저장하는 단위로 Json 형태이다.
- 하나의 도큐먼트는 여러 필드와 값을 갖는다. (field - value)
- 모든 도큐먼트는 반드시 하나의 인데스에 포함
- 도큐먼트를 인덱스에 포함시키는 것을 인덱싱(indexing)이라고 표현
- RDBMS의 레코드와 비슷한 개념
2. Index (인덱스)
- 도큐먼트를 정장하는 논리적 단위
- 하나의 인덱스에 다수의 도큐먼트가 포함
- 동일한 인덱스에 있는 도큐먼트는 동일한 스키마를 갖는다
- 스키마에 따라 인덱스를 구분
- RDBMS의 테이블과 비슷한 개념
Index의 생성
- Postman 기준 회원명, 주소, 가입일의 정보를 담고 있는 index의 생성 방법
- PUT Method를 사용
- `ES접근 IP 주소/인덱스명/`
{
"mappings": {
"properties": {
"name": {
"type": "keyword"
},
"addr": {
"type": "text"
},
"regDateTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
}
}
* MySQL 과 엘라스틱서치의 비교
MySQL | Elastic search |
테이블 | 인덱스 |
레코드 | 도큐먼트 |
컬럼 | 필드 |
스키마 | 매핑 |
Elastic search 도큐먼트의 CRUD
1. 도큐먼트 등록
- PUT Method를 사용
- ‘ES접근 IP 주소/인덱스명/_doc/도큐먼트 고유 아이디’
- 기존 필드 외 새로운 필드를 추가해도 인덱싱이 가능하다.
- 간단한 형변환을 자동으로 해준다 ex) “10” -> 10 / 10.0 -> 10 등
- 같은 도큐머트 아이디가 있으면 insert가 아닌 기존 도큐먼트에 데이터가 덮어 씌워진다.
{
"name" : "test",
"addr" : "address",
"regDate" : "2022-05-20 16:00:22"
}
2. 도큐먼트 조회
- GET Method를 사용
- ‘ES접근 IP 주소/인덱스명/_doc/도큐먼트 고유 아이디’
- 도큐먼트 고유 아이디를 통해 특정 도큐먼트 데이터를 가져온다
* ‘ES접근 IP 주소/인덱스명/_doc/도큐먼트 고유 아이디’ 를 통해 가져온 데이터 출력 결과
{
"_index": "estest",
"_type": "_doc",
"_id": "1",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"name": "test",
"addr": "address",
"regDate": "2022-05-20 16:00:22"
}
}
3. 도큐먼트 검색
- GET Method를 사용
- ‘ES접근 IP 주소/인덱스명’/_search
- 엘라스틱 search DSL 쿼리를 사용해서 모든 도큐먼트를 가져온다.
- match 내부에 검색하고자 하는 도큐먼트 필드명과 검색어를 작성.
- size는 검색 결과 수를 지정한다.
{
"query":{
"match":{
"name":"test"
}
}
, "size": 20
}
4. 도큐먼트 수정
- POST Method를 사용
- ‘ES접근 IP 주소/인덱스명’/_update/‘고유 아이디’
- 특정 도큐먼트의 특정 필드 값만 업데이트를 할 수 있다.
- 수정 작업은 비용이 많이 들어서 수정이 많은 작업에는 엘라스틱 서치를 권장하지 않는다.
5. 도큐먼트 삭제
- DELETE Method를 사용
- ‘ES접근 IP 주소/인데스명’/_doc/‘고유 아이디’
- 도큐먼트의 삭제
- 수정과 마찬가지로 비용이 많이 들어가는 작업이다.
참고 도서 : 엘라스틱 스택 개발부터 운영까지 (저자 : 김준영,정상운)
'Elastic Seaerch' 카테고리의 다른 글
ElasticSearch 사용자 사전, 동의어, 불용어 적용 (0) | 2023.06.09 |
---|---|
ElasticSearch Mapping 구조 추가 및 Reindex (0) | 2022.06.16 |
ElasticSearch mapping (0) | 2022.05.20 |