본문 바로가기

개발/Elastic Search12

Elastic Search를 이용한 검색 엔진 개발 참고 Elastic Search를 이용한 검색 엔진 개발 참고 Elastic Search, Spring Boot, Kotlin을 사용한 NHN COMMERCE의 상품 검색 엔진 개발 https://www.youtube.com/watch?v=fBfUr_8Pq8A Elastic Search 검색 엔진 예제 Github Fork https://github.com/BellOne4222/Project9_es GitHub - BellOne4222/Project9_es: 검색엔진 구현 예제 - Elasticsearch 검색엔진 구현 예제 - Elasticsearch. Contribute to BellOne4222/Project9_es development by creating an account on GitHub. git.. 2024. 2. 1.
검색 API, 집계 API 검색 API 검색 API 사용방식은 크게 두가지 HTTP URI 형태의 파라미터를 URI에 추가해 검색 RESTful API 방식인 Query DSL(RESTful Request 방식이 URI 방식보다 제약사항이 적으므로 더 선호됨) GET /my-index-000001/_search { "query": { "term": { "user.id": "kimchy" } } } 집계 API 버킷 구조 안에 다른 그룹화된 데이터가 포함돼 있다. → 집계 API가 강력한 이유중 하나 : 버킷 안에 다른 버킷의 결과를 추가할 수 있다. 다양한 집계 유형을 결합, 중첩, 조합이 가능 2024. 2. 1.
Document 관리 API ( = single document api) Document 관리 API ( = single document api) 실제 Documnent 조회, 수정, 삭제기본적으로 search api를 제공하지만, 색인된 문서의 ID 기준으로 한건 한건의 문서를 다룰 경우 document 관리 api를 이용한다. index api : 한건의 문서를 색인 get api : 조회 delete api : 삭제 update api : 업데이트 multi-document api도 제공한다. multi get api : 다수 문서 조회 ID 지정하지 않고 문서 생성도 가능 UUID를 통해 무작위 생성된다.단 검색엔진은 DB와 주기적 동기화가 필요하므로 random 식별자로 사용한 경우 DB 맵핑을 위해 별도의 룩업테이블이 필요함. 따라서 처음에 생성할 때 부터 DB의 .. 2024. 2. 1.
인덱스 관리 API 인덱스 관리 API 인덱스 생성 : 인덱스 생성 시 맵핑이라는 세부설정을 이용할 수 있는데 맵핑은 문서와 문서에 포함된 필드, 필드 타입 등을 세세하게 지정하는 것이 가능한 설정 방식. 주의 : 한번 생성된 맵핑 정보는 변경할 수 없다. 잘못 생성했다면 데이터 삭제하고 다시 색인하는 수밖에 없다. PUT /my-index-000001 { "settings": { "index": { "number_of_shards": 3, "number_of_replicas": 2 } } } 2024. 2. 1.
ES 주요 API ES 주요 API RESTful 방식의 API를 제공하며, 이를 통해 JSON 기반으로 통신한다. API 분류인덱스 관리 API (Indices API)문서 관리 API (Document API)검색 API (Search API)집계 API (Aggregation API) Schemaless 지원 기능 인덱스의 존재 여부를 확인하고 인덱스가 존재하지 않는다면 문서를 분석해서 문서가 색인될 수 있도록 인덱스 자동 생성해주는 기능 자동 생성된 필드를 보면 모든 필드가 text 타입과 keyword 타입을 동시에 제공하는 멀티필드 기능으로 구성되는 경우가 많다 -> 데이터 공간의 낭비 초래. 단순히 문자열로 저장하고 싶은 경우 keyword. 형태소 분석을 원하는 경우 text 타입 사용. 대부분 데이터가 복.. 2024. 2. 1.
Cluster, Node, Shard Cluster, Node, Shard 하나의 ES 클러스터는 인덱스의 문서를 조회할 때 마스터 노드를 통해 2개의 노드를 모두 조회해서 각 데이터를 취합한 후 결과를 하나로 합쳐서 제공한다. 여러개의 클러스터를 연결해서 구성할 수도 있다. 클러스터 내 노드는 실시간으로 추가, 제거 가능하다. 인덱스별로 샤드가 2개고 리플리카가 1개로 설정한 예시 { "settings" : { "index" : { "number_of_shards" : 2, "number_of_replicas" : 1 } } } 2024. 2. 1.
Node Types Node Types Master Node : 클러스터 관리노드 추가/제거 등 관리 Data Node : 실질적인 데이터 저장 : 데이터가 실제로 분산 저장되는 물리 공간인 샤드가 배치됨.검색과 통계 등 데이터 관련 작업 수행 : 색인 작업은 CPU, 메모리, 스토리 등 컴퓨팅 리소스를 많이 소요하므로 리소스 모니터링이 필요함. Coordinating Node : 사용자의 요청만 받아서 처리.클러스터 관련 요청은 마스터노드로, 데이터 관련 요청은 데이터 노드로 전달 Ingest Node : 문서의 전처리 담당인덱스 생성 전 문서의 형식을 다양하게 변경할 수 있음 2024. 2. 1.
기본 용어 기본 용어 Index : 데이터 저장 공간하나의 물리 노드에 여러개 논리 인덱스 생성하나의 인덱스가 여러 노드에 분산 저장 (M:N) Shard : 색인된 문서는 하나의 인덱스 — 인덱스 내부에 색인된 데이터는 여러개의 파티션으로 나뉘어 구성됨.(파티션 = 샤드) Type : 인덱스의 논리적 구조6.1부터 인덱스당 하나의 타입만 설정 가능(6.0 이하에서는 music 인덱스에서 rock, pop등 장르별로 분리하는데 타입을 사용할 수 있었음) Document : 데이터가 저장되는 최소 단위JSON 포맷으로 저장DB의 Row에 대응됨. Field : 문서를 구성하기 위한 속성DB의 컬럼과 비교할 수 있음하나의 필드는 목적에 따라 다수의 데이터 타입을 가질 수 있음 Mapping : 문서의 필드, 필드 속성.. 2024. 1. 31.