본문 바로가기
728x90

ElasticSearch & OpenSearch14

[검색서비스] 어쩌다보니 이세계 검색서비스 담당자 ElasticSearch 를 사용해본 경험이 있다는 것 하나로 어쩌다보니 검색 서비스 담당자가 되었다. 당시에 검색 관련해서 물어볼 사람이 없었기에 구축하는 과정에서 스트레스를 정말 많이 받았었는데, 혹시라도 나같은 사람이 있다면 조금이나마 도움이 되고자 글을 작성해본다. 검색서비스 구축 순서는 보통 아래와 같이 진행한다. 1. 검색엔진 세팅 -> 2. 인덱싱 프로세스 구축 -> 3. API 개발 1. 검색엔진 세팅 우리의 경우 AWS OpenSearch 를 사용했는데, ElasticSearch 와 마찬가지로 인덱스 별로 settings 와 mappings 정보를 세팅해줘야 한다. settings: tokenizer, analyzer 등과 관련된 정보 세팅 mappings: 인덱스 별로 필요한 필드명, .. 2024. 1. 19.
[Kibana] User 생성 방법 1. Kibana Console 로그인 2. Menu > Management > [Stack Management] 클릭 3. Security > Users > [Create user] 클릭 4. User 정보 입력 1) Username: email 주소 입력 2) Password: 6자리 이상으로 설정(추후에 담당자에게 변경하라고 요청) 3) Privileges superuser: User 생성부터 모든 기능을 부과하기 위한 권한이다. viewer, kibana_admin, watcher_admin: 이정도의 권한이면 대시보드 추가 및 보기부터 왠만한건 다 할 수 있다. reporting_user: 대시보드 다운로드가 필요한 경우에는 해당 권한을 추가해줘야 한다. 2023. 12. 21.
[OpenSearch] 수동 Snapshot AWS OpenSearch 의 경우 인스턴스 유형 별로 최대 스토리지가 정해져 있다. 로그 남기는 용도로 사용하고 있는 경우에는 그렇게 좋은 사양을 사용할 필요도 없고, 노드 수를 많이 만들 필요도 없다고 본다. 그러나 스토리지의 한도는 점점 다가오고, OpenSearch 는 Low Disk Space 알림을 내뱉기 시작할텐데... 과거 로그 쿨하게 삭제...⭐️ 를 하고 싶으나, 검색 로그의 경우 다양한 지표에서 쓰일 수 있기 때문에 쿨하게 삭제할 수도 없는 노릇이다. OpenSearch 의 경우 자동 스냅샷을 생성해주긴 하나 14일 동안만 보관하고 클러스터 복구 전용으로 다른 클러스터로 데이터 이동이 안된다. 그렇기 때문에 수동 스냅샷 생성하는 방법에 대해 알아보도록 하자. 사전 준비 1. S3 B.. 2023. 5. 16.
[OpenSearch] index template (인덱스 템플릿) 인덱스 템플릿은 주로 설정이 동일한 복수의 인덱스를 만들 때 사용한다. 로그 인덱스를 만든다고 가정해 보자. 한개의 인덱스에 모든 로그 데이터를 넣어주면 어떻게 될까? 초반에 데이터가 적을때는 괜찮겠지만 결국 나중에는 폭-팔-⭐️ 할 것이라는걸 모두 알고 있기 때문에, 로그 인덱스의 경우 대부분 일별 혹은 월별로 인덱스를 생성해줄 것이다. curation-log-20230405, curation-log-20230406, curation-log-20230407, ... 로그의 경우 같은 사전을 사용하고 같은 tokenizer 및 analyzer 를 사용하며 색인하는 필드 역시 동일할 것이다. 그렇다면 일마다 동일한 settings 와 mappings 를 넣어 로그 인덱스를 생성해줘야 할까? 다행히 Ope.. 2023. 4. 6.
[ElasticSearch] _cat API 를 이용한 ES 모니터링 E-커머스에서 검색은 아주 중요하다. 그렇기 때문에 ElasticSearch 의 상태를 모니터링하는 일 역시 중요한데, ES 에서 제공해주는 _cat API 를 이용하면 좀 더 쉽게 체크할 수 있다. _cat API 중에서도 자주 사용되는 것만 추려봤다. 1. 클러스터에 속한 노드들의 상태 확인 GET _cat/nodes ?v 옵션을 붙이면 해당 항목의 필드명 확인이 가능하다. GET _cat/nodes?v heap.percent: 사용중인 heap memory percentage ram.percent: 사용중인 memory percentage cpu: 사용중인 CPU percentage load_1m,5m,15m: 사용중인 load average 값 node.role: 노드의 role (m - mast.. 2022. 12. 19.
[ElasticSearch] _script 를 사용한 sort Painless 란? ElasticSearch를 사용하다보면 Elastic Query DSL이나 Lucene Query, KQL (Kibana Query Language) 등으로는 원하는 대로 데이터를 조회 및 가공하기 어려운 상황 등이 발생한다. 이런 경우 Painless 라는 Elasticsearch 전용 Script 언어를 이용해서 문제를 해결할 수 있다. ​ Painless는 ElasticSearch 전용으로 만들어진 단순하고 안전한 스크립트 언어로, ElasticSearch에서 inline scripts와 stored scripts에 기본으로 사용된다. _script 를 사용한 sort ElasitcSearch 의 경우 문자열 정렬 기준이 `숫자 -> 영문 -> 한글` 순인데, 기획 쪽에서 브랜.. 2022. 5. 5.
728x90
반응형