정말 오랜만에 Elasticsearch 관련 글을 쓰는 것 같다. 데이터를 생성하는 모델이 변경되어서 기존 데이터를 싹 마이그레이션 할 일이 생겼다. 가장 편한건 데이터를 싹 만들어두고 서버가 보는 index를 변경하는 것이었지만, 그럼 서버의 재배포가 필요하다. 그래서 그냥 index를 새로하나 만들고 두 index를 교체하는 방식으로 작업을 진행하려고 했다. 불행하게도 두 index를 교체하는 방식은 따로 제공하지 않았고, copy to 하는 형식의 reindex를 제공했다. 사용법은 간단하다. POST _reindex { "source": { "index": "from index" }, "dest": { "index": "to index" } } 이렇게 요청했을 때 바로 동작했으면 참 좋았겠지만, ..
이전 글에서 사용했던 Cosine Search는 dense vector 하나만을 이용한 방법이었다. 그래서 내가 조금 더 다양한 정보를 갖고 있을 때, 이를 전부 활용하기 어렵다는 단점이 있다. 예를 들어, 내가 알고 있는게 게시물의 제목, 내용, 작성자, 작성 시간 등 몇 가지의 정보가 있음에도 게시물의 제목만 활용할 수 있다는 것이다. 모든 내용을 한문장에 섞어서 하나의 벡터화를 할 수도 있겠지만, 이럴 경우 엄밀히 말하면 각각을 비교한 결과가 아니게 된다. 이렇게 다양한 정보를 활용하기 위해서 Elasticsearch에서는 K-NN search 기능을 제공한다. 이를 이용해 검색 기능을 Springboot로 구현해봤다. 대략적인 구현은 cosine search에서 구현한 방식을 따라가려고 한다. 그..
작은 프로젝트로 텍스트 기반 검색 기능을 구현할 일이 생겼다. 처음에는 너무 막연했는데 Elasticsearch에서 텍스트 유사도 검색이라는 기능을 제공하는 것을 알게되었다. https://www.elastic.co/kr/blog/text-similarity-search-with-vectors-in-elasticsearch 벡터 필드를 사용한 Elasticsearch의 텍스트 유사도 검색 Elasticsearch 7.3 릴리즈에서는 벡터를 사용하여 문서 점수를 매기는 기능을 제공합니다. 이 게시물에서는 텍스트 임베딩과 벡터 필드를 사용하여 유사도를 검색하는 방법을 살펴봅니다. www.elastic.co 이 문서를 기반으로 Elasticseach cloud + Springboot를 이용해 검색 기능을 구현..
Elasticsearch를 cloud 환경에서 사용하고 Spring Boot와 연동하는 방법은 이전 글에서 다뤘다. 이번 포스팅은 내가 개발하면서 특이하다고 느꼈던 것 몇 가지를 정리하고자 한다. 1. credential 처리하기 credential 을 처리 하기 위해, 먼저 username과 password를 생성해야 한다. 그런데 Elastic cloud 에서 왜 숨겨놨는지 찾기 힘든 위치에 있어서 찾는데 고생을 좀했다. ES main 페이지 > 본인 계정 옆에 Manage 버튼 클릭 > 좌측 Security 를 클릭 이러면 아래 페이지가 나오는데 여기서 Reset password를 누르면 elastic user의 password가 생성된다. 복사해놓거나 다운로드한다. 이제 client에서 위에 생성..
failed to create query: [knn] queries are only supported on [dense_vector] fields 여기서 예시는 knn으로 들었지만, _search를 이용한 Elasticsearch의 검색 알고리즘을 사용할 때 발생하는 문제이다. 말 그대로 knn 쿼리를 날린 필드가 dense_vector의 형태가 아니란 것이다. 에러를 발생시켜보자 테스트 코드는 엘라스틱 서치의 kNN search 가이드에서 가져왔다. 우선 테스트를 위해 데이터를 삽입한다. POST image-index/_bulk?refresh=true { "index": { "_id": "1" } } { "image-vector": [1, 5, -20], "title-vector": [12, 50, -..
회사에서 작은 프로젝트를 진행하는데 Elasticsearch 를 써볼 기회가 생겼다. 들어가기 전에 Elasticsearch 가 뭔지에 대해 간단히 정리해보자 Elasticsearch 란? Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 무료 검색 및 분석 엔진으로 분산형과 개방형을 특징으로 합니다. Elasticsearch는 Apache Lucene을 기반으로 구축되었으며, Elasticsearch N.V.(현재 명칭 Elastic)가 2010년에 최초로 출시했습니다. 간단한 REST API, 분산형 특징, 속도, 확장성으로 유명한 Elasticsearch는 데이터 수집, 보강, 저장, 분석, 시각화를 위한 무료 개방형 도구 모음인 El..
- Total
- Today
- Yesterday
- java
- Log
- terraform
- EKS
- JWT
- OpenFeign
- cache
- Elastic cloud
- Kotlin
- elasticsearch
- AWS EC2
- 인프런
- OpenAI
- chat GPT
- springboot
- Spring
- CloudFront
- docker
- serverless
- 스프링부트
- MySQL
- AWS
- 람다
- S3
- awskrug
- GIT
- ChatGPT
- lambda
- openAI API
- AOP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |