티스토리 뷰
728x90
반응형
Elasticsearch
- 엘라스틱서치(Elasticsearch)는 아파치 루씬(Apache Lucene)을 기반으로 개발된 오픈소스 분산 검색 엔진이다.
- 루씬의 역색인(inverted index) 구조를 활용하여 문서 내 단어들을 빠르게 색인하고 검색할 수 있다.
- 엘라스틱서치는 검색 엔진 기능 외에도 로그 분석과 실시간 모니터링 등에 사용된다.
- 특히 Logstash와 Kibana와 함께 사용되어 데이터 수집, 저장, 분석, 시각화를 제공할 수 있다.
- Elasticsearch Python Client 사용하면 Python 애플리케이션에서 Elasticsearch를 쉽게 통합할 수 있다.
1) Elasticsearch 설치
- Elasticsearch Python Client를 설치하려면 pip를 사용하면 된다.
pip install elasticsearch
2) Elasticsearch Client 노드 연결하기
from elasticsearch import Elasticsearch
client = Elasticsearch(
"http://localhost:9200", # endpoint
api_key="api_key",
)
- api_key는 인증과 권한을 관리하는 방법이다. 보안 설정을 하고 api key를 생성할 수 있다.
- https://doohee94.tistory.com/25 ELK security 설정 참고 (docker 기준)
- 초기에는 작성하지 않으면 default 값으로 None이 입력된다.
3) Index(인덱스) 생성하기
- Elasticsearch에서 인덱스는 MySQL 데이터베이스의 테이블과 같다.
client.indices.create(index="my_index")
- 삭제도 간단하게 가능하다.
client.indices.delete(index="my_index")
4) Documents(문서) 관리하기
- MySQL의 테이블에서는 각 행(row)이 개별적인 레코드로 관리되지만, Elasticsearch에서는 문서들이 통으로 역색인되어 관리다.
(1) 문서 생성하기
client.index(
index="my_index",
id="my_document_id",
document={
"field1": "value1",
"field2": "value2",
}
)
- Elasticsearch의 문서 ID는 MySQL에서 각 레코드(행)을 구분하는 기본키(Primary Key)에 해당된다.
- Elasticsearch의 문서는 여러 개의 field-value 쌍으로 구성되며, 이는 MySQL의 테이블 구조에서 열(column)과 값(value)에 대응된다.
(2) 문서 조회하기
client.get(index="my_index", id="my_document_id")
- 어떤 인덱스의 어떤 id를 가진 문서를 조회할지 입력하면 문서를 가져온다.
(3) 문서 검색하기
client.search(index="my_index", query={
"match": {
"field1": "value1"
}
})
- search는 여러개의 문서들을 검색한다.
- "my_index" 인덱스에 쿼리를 날려 문서를 검색할 수 있다.
- "match"는 쿼리 종류를 의미한다.
- match: 풀 텍스트에서 해당 단어를 검색한다. (OR 검색)
- match_all: 모든 문서를 검색한다.
- 여기서는 field1에 value1을 포함하는 문서들이 검색된다.
(4) 문서 수정하기
client.update(index="my_index", id="my_document_id", doc={
"field1": "new value1",
"new_field": "new value2",
})
- "my_index" 인덱스의 문서 ID가 "my_document_id"인 문서를 찾아 doc의 내용으로 수정한다.
- "field1": "new value1" 코드는 "field1" 필드의 값을 "new value1"로 변경하는 것을 의미한다.
- "new_field": "new value2" 코드는 "new_field"라는 새로운 필드를 추가하고 그 값을 "new value2"로 설정하는 것을 의미한다.
(5) 문서 삭제하기
client.delete(index="my_index", id="my_document_id")
- 문서 ID를 통해 문서를 삭제한다.
참고문헌
728x90
반응형
'Study > Ect' 카테고리의 다른 글
[VSCode] MySQL Extension으로 DB 연결하기 (0) | 2024.07.08 |
---|---|
[MySQL] MySQL 설치하기 (윈도우 / windows) (0) | 2024.07.05 |
[Python] 구글 드라이브 링크로 파일 다운 받기 (gdown / gdrive dataset) (0) | 2023.06.09 |
[Python] 압축 폴더 해제하는 방법 (zip 압축 풀기) (0) | 2023.06.09 |
[Python] Colab에서 아래한글(hwp) 문서 엑셀/csv 파일로 저장하기 (0) | 2023.05.05 |
댓글
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
TAG
- 구현
- 코드트리
- python
- FastAPI
- 알고리즘
- Look-ahead Mask
- padding mask
- 코딩테스트실력진단
- disjoint set
- BFS
- 코딩테스트
- Transformer
- greedy
- 트랜스포머
- DP
- 그리디
- COLAB
- 수학
- 분리집합
- 파이썬
- boj
- lis
- 백준
- pytorch
- dfs
- 이분탐색
- Algorithm
- MySQL
- Prefix sum
- 누적합
링크