본문 바로가기

Category

(227)
[ElasticSearch] MySQL Like와의 검색 속도 비교 역인덱싱 엘라스틱서치의 역인덱싱(inverted indexing)은 문서가 포함하고 있는 각 단어의 색인을 만드는 과정을 말한다. 각 단어에 대한 문서의 참조를 역순으로 저장하는데, 이렇게 하면 검색 엔진이 단어를 빠르게 찾고 해당 단어가 포함된 모든 문서를 즉각적으로 확인할 수 있다. 역인덱싱의 시간 복잡도 1. 색인 생성: 각 문서에 대해 단어를 추출하고 색인을 만드는 데 O(N * M)의 시간이 걸린다. 여기서 N은 문서의 수, M은 문서당 평균 단어 수다. 2. 검색 연산: 색인이 생성되고 나면, 특정 단어의 검색은 매우 빠르다. 색인에서 직접 해당 단어에 접근하여 연관된 문서들을 찾을 수 있으므로, 이론적으로 O(1)에 가까운 시간 복잡도를 갖는다. 하지만 실제로는 검색어에 대해 매칭되는 문서들..
1주차 스터디 노트 면접 예상 질문 1. 운영체제는 무엇이고 어떤 역할을 수행하는지 설명해주세요. 답변 - 운영체제는 컴퓨터 시스템이 동작할 때, 이들 자원을 적절하게 사용할 수 있는 방법을 제공한다. - 컴퓨터 하드웨어와 사용자 간의 인터페이스 역할을 하는 시스템 소프트웨어이다. 이는 현대의 정부와 유사하다. 정부 자체로는 유용한 기능을 제공하지 않지만, 유용한 작업을 할 수 있는 환경을 만드는 것이다. - 역할 1. 메모리 자원을 관리한다. (하드웨어 자원을 관리) 실행할 프로그램을 메모리에 적재하고, 실행되지 않는 프로그램을 메모리에서 삭제한다. CPU, 메모리, 입출력 장치 등 컴퓨터 자원을 효율적으로 관리하고 할당한다. - 역할 2. CPU 자원을 할당하여 프로그램들이 올바르게 실행되도록 관리한다. 이는 메모리에 ..
스터디 시작 개요 본격적으로 프로젝트 이후 오후 시간에 CS를 학습하려고 한다. 지금까지는 동기생들, 주변 스터디 팀원들과 알음알음 질의응답식으로 예상 문제를 던져주는 것에 그쳤지만, 이번 스터디 참여를 계기로 면접을 위한 지식이 아닌 개발을 위해 필요한 지식적 기반을 쌓고자 한다. 일정 주차별 핵심 소재를 필두로 원리를 학습하고, 예상 질문을 서로 질의해보며 기반을 다질 것이다! https://jscode.notion.site/CS-e7a5eef418f24e83842b331803c34458 모의면접으로 학습하는 컴퓨터공학(CS) 스터디 📋 스터디 개요 jscode.notion.site
[ElasticSearch] 집계함수 정의와 적용 PUT _index_template/scrap_template_wiki { "index_patterns" : [ "scrap_wiki_*" ], "template" : { "settings" : { "index" : { "analysis" : { "filter" : { "length_filter": { "type": "length", "min": 2 }, "nori_filter" : { "type" : "nori_part_of_speech", "stoptags" : [ "E", "IC", "J", "MAG", "MM", "NA", "NR", "SC", "SE", "SF", "SH", "SL", "SN", "SP", "SSC", "SSO", "SY", "UNA", "UNKNOWN", "VA", "VCN",..
[ElasticSearch - springboot] (Script) 여행지 제목과 매핑되는 정보 제공 위키 제목 == 여행지 제목과 매핑되는 정보 제공 이슈 # 기존 코드 GET scrap_wiki_1102/_search { "_source": ["attraction_name", "content_id", "wiki_title", "wiki_content"], "query": { "bool": { "must": [ { "script": { "script": { "source": "if (doc['attraction_name.keyword'].size() != 0 && doc['wiki_title.keyword'].size() != 0) { return doc['attraction_name.keyword'].value == doc['wiki_title.keyword'].value; } return false..
[ElasticSearch] Script 쿼리와 Must 쿼리 해당 쿼리가 헷갈려서 복습을 위해 글을 작성하였다. Script 쿼리 script 쿼리는 Elasticsearch 내에서 사용자 정의 스크립트를 통해 문서를 필터링하거나 스코어링하는 데 사용되는 쿼리다. 이 스크립트는 "Painless"라는 Elasticsearch에서 제공하는 스크립트 언어를 사용하여 작성될 수 있다. script 쿼리의 주요 특징: 유연성: 사용자는 문서 필드의 값을 기반으로 복잡한 조건을 사용하여 문서를 필터링하거나 스코어링 할 수 있다. 성능 문제: 스크립트 쿼리는 다른 일반적인 쿼리에 비해 비용이 많이 들 수 있다. 따라서 대용량의 데이터셋에서 스크립트를 사용할 때는 성능에 주의해야 한다. 보안 문제: 이전 버전의 Elasticsearch에서는 Groovy와 같은 다른 스크립트 ..
[ElasticSearch] NativeQuery 도저히 @Query를 사용해서 로우 쿼리를 사용할 수가 없다. 에러도 많이 나고, 지원하지도 않으며 검사 역시 힘들기 때문이다. https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch.misc.searchtemplates Spring Data Elasticsearch - Reference Documentation The Spring Data infrastructure provides hooks for modifying an entity before and after certain methods are invoked. Those so called EntityCallback instances prov..
[ElasticSearch] spring data elasticsearch Null 출력 이슈(Getter, Reflection) 이슈 : Getter와 리플렉션, 그리고 프록시(JPA와의 차이) Documnet 객체에 Getter를 붙이지 않을 경우 값이 반환되지 않는다. @Getter는 Lombok 라이브러리의 어노테이션이며, 이를 클래스 레벨에 붙이면 해당 클래스의 모든 필드에 대한 getter 메소드를 자동으로 생성해준다. 만약 @Getter 어노테이션이 없다면, 필드에 접근하는 getter 메소드가 생성되지 않아서 외부에서 해당 필드의 값을 읽을 수 없다..! 리플렉션을 사용할 수 없기 때문이다. Spring Data Elasticsearch는 리플렉션을 사용하여 도메인 객체의 필드 값을 읽어내는데, 이 과정에서 getter 메소드를 통해 필드의 값을 가져온다. @Getter가 없으면 해당 필드에 대한 getter 메소드가..