Elastic Search 20

[Elasticsearch] Elasticsearch 구성할 때 유의할 점

Elasticsearch 주요 구성 요소 설정Elasticsearch를 시작하기 위해서 별도로 추가 구성이 거의 필요하지 않지만 상용 환경에서 Elasticsearch를 시작하기 전에 고려해야 될 또는 한 번 더 확인해야 될 설정들이 있음 1. Path SettingsElasticsearch가 데이터, 로그, 임시 파일 등을 저장할 경로를 설정하는 구성 요소권한 설정을 통해 elasticsearch user가 접근 가능하도록 설정해야 함 1.1 path.data데이터 노드가 데이터 파일을 저장하는 경로default 값은 Elasticsearch 홈 디렉토리의 data 하위 디렉토리Elasticsearch를 업그레이드하면 삭제가 될 수 있으므로 상용 환경에서는 홈 디렉토리 외 다른 경로를 설정하는 것을 권..

Elastic Search 2024.07.19

[Elasticsearch] 최적화를 위한 시스템 설정

1. Resource Limit시스템에서 프로세스가 사용할 수 있는 여러 자원의 한계점을 설정하는 방법설정하는 방법은 OS마다 상이하며 여기서는 mac os, linux 기준으로 설명시스템 리소스는 제한된 자원인데 resource limit 설정 시 시스템 관리자가 시스템 리소스를 보호하고 용도에 맞게 분배 가능이를 통해 Elasticsearch의 안정성과 성능을 보장 1.1 Resource Limit 적용 방법$ulimit: Unix 및 Unix 계열 운영 체제에서 사용자 별로 시스템 리소스 제한을 임시로 설정하고 조회하는 명령어로 적용 시 현재 세션 동안에만 유효하며, 세션이 종료되면 설정이 사라짐 설정을 영구적으로 적용하려면 /etc/security/limits.conf 파일을 수정해 Soft Li..

Elastic Search 2024.07.13

[Elasticsearch] 색인

색인이 동작하는 과정여러 개의 Primary 샤드로 구성되어 있는 경우 hash(_id) % (샤드 개수)로 샤딩이 이루어짐MurmurHash3 알고리즘 사용해시 테이블에서 키를 빠르고 균일하게 분산시키기 위해 사용되는 비암호화 해시 함수Elasticsearch에서는 색인 시 문서의 필드를 고유한 키 값으로 변환하는 데 사용되며 해당 알고리즘은 매우 빠르고 충돌 가능성이 낮아 널리 사용 Apache Lucene 색인새 문서가 Apache Lucene에 색인되면 바로 디스크에 즉시 기록되는 대신 in-memory buffer에 analyzer에 의해 analyze 된 문서가 저장됨바로 디스크에 저장하지 않고 in-memory buffer를 거치는 이유는 I/O 횟수를 절약하기 위해 그리고 롤백에 용이하기 ..

Elastic Search 2024.06.28

[Elasticsearch] 검색

Elasticsearch Cluster 구조Elasticsearch는 분산형 검색 엔진으로써 데이터를 여러 노드에 분산해서 저장각 노드는 여러 개의 인덱스를 가질 수 있으며각 인덱스는 여러 개의 샤드로 구성샤드는 primary 샤드와 replica 샤드로 구성샤드는 Apache Lucene 인스턴스로써 독립적으로 작동하며 각 샤드는 데이터의 일부분을 가지고 있음  검색 요청의 처리 과정Elasticsearch의 검색 요청은 크게 두 단계로 나뉨Query phaseFetch phase 이 때문에 query then fetch라고도 불림 1. Query Phase검색 요청이 수행되어야 하는 샤드를 결정하고 각 샤드에서 검색을 수행하는 단계client 요청은 L4 등을 통해 특정 노드로 라우팅요청을 받은 노드..

Elastic Search 2024.06.28

[Elasticsearch] ILM

ILM(Index Lifecycle Management)Elasticsearch의 인덱스 수명 주기를 자동으로 관리하기 위한 기능로깅 시스템처럼 인덱스가 계속해서 쌓이는 환경에서 인덱스를 효율적으로 관리 가능ILM을 사용하면 인덱스가 생성된 후의 상태를 단계별로 정의하고, 각 단계에서 수행할 작업 지정 가능하며 이를 통해 인덱스의 크기와 성능을 최적화하고, 스토리지 비용을 절감하며, 인덱스 수명 주기 전반에 걸쳐 데이터를 효율적으로 관리 가능인덱스가 특정 크기 또는 문서 수에 도달하면 새 인덱스를 생성특정 기간이 지나면 새로운 인덱스를 생성하고 이전 인덱스를 보관아주 오래된 인덱스를 제거 ILM의 주요 개념 1. 수명 주기 정책(Lifecycle Policy)인덱스의 수명 주기를 정의하는 정책각 정책은 ..

Elastic Search 2024.06.27

[ELK] Beats 정리

Beats경량 데이터 수집기로 다양한 원격 시스템과 서비스에서 데이터를 수집하여 Elasticsearch 또는 Logstash로 전송하는 역할 수행Elastic Stack의 중요한 구성 요소 중 하나로 다양한 유형의 데이터를 중앙 집중식으로 수집하고 분석 가능하도록 지원역할만을 보면 Elastic Stack의 또 다른 구성요소인 Logstash와 유사해 보일 수 있으나 Logstash는 다양한 플러그인을 포함해 범용성이 높은 만큼 무겁게 움직이는 반면, Beats는 범용성을 포기하고 특정 목적만 수행하도록 가볍게 구성되어 애플리케이션의 성능에 영향을 미치지 않고 필요한 이벤트 수집 가능오픈소스 라이선스를 따르며 립비트(Libbeat)라는 프레임워크를 제공하므로  사용자들이 직접 필요한 각 비트 구현 가능..

Elastic Search 2024.06.25

[ELK] Logstash 정리

LogstashElastic Stack의 중요한 구성 요소 중 하나로 로그 및 이벤트 데이터를 수집, 변환, 저장하는 데이터 처리 파이프라인다양한 소스에서 데이터를 수집하여 Elasticsearch와 같은 저장소로 전송하기 전에 데이터를 필터링 및 변환하는 데 사용다양한 데이터소스를 쉽게 연동할 수 있는 기능 제공Elasticsearch와의 연동이 잘 되어있기 때문에 로그 수집을 해서 분석, 모니터링 하는데까지 용이하게 사용 가능  Logstash 특징 1. 플러그인 기반로그스태시의 파이프라인을 구성하는 각 요소들은 전부 플러그인 형태로 만들어져 있음기본으로 제공되는 플러그인 외에도 수많은 써드 파티 플러그인을 찾을 수 있으며 정말 필요한 경우 비교적 간단한 코드로 전용 플러그인을 작성해 로그스태시의 다..

Elastic Search 2024.06.25

[Elasticsearch] 검색 정확도와 랭킹

검색 정확도검색 결과의 정확도나 정합성을 나타내는 지표로 주어진 검색어에 대해 얼마나 적합한 결과가 반환되는지를 평가일반적으로 검색 엔진은 사용자가 입력한 검색어와 일치하는 문서를 찾아내기 위해 다양한 알고리즘과 기술을 사용하며 이때 검색 정확도는 검색 엔진이 얼마나 정확하고 적합한 결과를 찾아내는지를 측정하는 척도검색 정확도는 서비스의 신뢰도에 영향을 끼치고 만족도가 떨어질 경우 이탈률 발생시킬 우려가 크기 때문에 매우 중요한 지표 1. 검색 정확도의 요소검색어와 문서 간의 일치도: 검색어와 문서의 일치하는 단어 또는 구절의 유사성 평가문서의 중요도: 문서의 중요도나 신뢰도를 고려하여 결과의 순위 결정검색어의 중요도: 검색어에서 어떤 단어가 중요한지를 판단사용자의 의도 파악: 사용자의 검색 의도를 파악..

Elastic Search 2024.06.19

[Elasticsearch] Fuzzy 쿼리

오타사전적 의미: 타자를 칠 때에 잘못 찍는 일 또는 그 글자영어: typo, typographical error오타는 '검색 결과 없음'의 주요 원인발생하는 이유는 다음과 같이 다양함키보드 타이핑 시 왼손과 오른손의 반응 속도 차이모바일에서 터치 실수 (Fat Finger)정타를 오타로 잘 못 인지하는 경우정타 자체를 인지하지 못하는 경우etc. Fuzzy Matching오타 입력 시 의도한 정타로 검색어를 전환하는 기법이를 지원하면 검색어의 결과가 나오지 않는 문제를 일부 해결 가능UX를 향상 시키는 일검색 서비스에 신뢰하는 요소 Elasticsearch가 오타를 지원하는 방법 1. Levenshtein distance 기반의 알고리즘 Damerau-Lavenshtein두 개의 문자열 A, B가 주어..

Elastic Search 2024.06.19

[Elasticsearch] 스크립트 쿼리

스크립트 쿼리Elasticsearch에서 제공하는 스크립트 언어를 활용해서 검색 쿼리 생성필터 기반의 검색 쿼리여러 필드를 동시에 다루거나 검색 조건이 달라지는 경우 활용 스크립트 사용 방법 스크립트 언어 종류painless: Elasticsearch에서 자체적으로 만든 스크립트 언어expression: 랭킹과 정렬에 사용하기 위한 js를 바이트 코드로 컴파일하는 언어mustache: 템플릿에서 변수 매칭을 위해서 사용되는 표현식으로 {{ variable }}로 표현java 1. painless빠르고 안전자바의 데이터 타입을 지원하며 def와 같은 동적인 타입도 지원조건문의 경우 switch를 제외한 일반적인 자바 문법 지원 1.1 painless 스크립트 사용 케이스문서에 접근하는 용도업데이트, 삭제,..

Elastic Search 2024.06.13