본문 바로가기

프로젝트

(77)
[ElasticSearch] spring data elasticsearch Null 출력 이슈(Getter, Reflection) 이슈 : Getter와 리플렉션, 그리고 프록시(JPA와의 차이) Documnet 객체에 Getter를 붙이지 않을 경우 값이 반환되지 않는다. @Getter는 Lombok 라이브러리의 어노테이션이며, 이를 클래스 레벨에 붙이면 해당 클래스의 모든 필드에 대한 getter 메소드를 자동으로 생성해준다. 만약 @Getter 어노테이션이 없다면, 필드에 접근하는 getter 메소드가 생성되지 않아서 외부에서 해당 필드의 값을 읽을 수 없다..! 리플렉션을 사용할 수 없기 때문이다. Spring Data Elasticsearch는 리플렉션을 사용하여 도메인 객체의 필드 값을 읽어내는데, 이 과정에서 getter 메소드를 통해 필드의 값을 가져온다. @Getter가 없으면 해당 필드에 대한 getter 메소드가..
[ElasticSearch] 로그스태시 최종 삽입 로그스태시를 통해 5만여개의 데이터를 삽입하였다. 빅데이터라고는 할 수 없지만, 900MB의 텍스트 데이터에서 유효한 토큰을 추출 할 수 있을 것이라고 기대해본다. 그런데, 이렇게 넣는 데이터로 만들어지는 인덱스의 설정을 만들어지고 reindex로 만드는 것 보다는 인덱스 템플릿을 만들고 적용하는 것이 더욱 효율적일 것이다. 숙박업소와 여행지의 템플릿을 설정하려고 한다. # 숙박업소 PUT _index_template/scrap_template_accmmo { "index_patterns": ["scrap_accommo_*"], "template": { "settings": { "number_of_shards": 1, "analysis": { "analyzer": { "korean": { "type": ..
[ElasticSearch]Springboot 매치 쿼리 - @Query, @Mapping, @Setting @Mapping, @Setting https://javas.tistory.com/17 @Setting, @Mapping nori 설정 @ 십질 끝에 정리 - Setting or Mapping 은 최초 index (table) 생성시 적용이 됩니다. - 중간에 끼어 넣기 안됨 , 최초 생성하면서 설정 해줘야함 . - spring data @Document 객체에 @Setting, @Mapping annotation을 통해서 javas.tistory.com https://velog.io/@dktlsk6/Spring-boot-ElasticSearch-%EC%97%B0%EB%8F%99-%ED%95%98%EC%97%AC-%EC%8B%A4%EC%8B%9C%EA%B0%84-%EA%B2%80%EC%83%89-%EC%8..
[ElasticSearch, LogStash] LogStash로 csv 파일 적재 로그스태시란? 로그는 표준화되지 않은 임의의 데이터 뭉치들이라고 할 수 있다. 이러한 데이터들을 수집하는 과정에서 형태를 분석하고, 시스템에서 인식해서 저장할 수 있도록 정제하는 작업을 편리하게 지원한다. 이전 게시글에서 로그스태시를 설치하였다. https://csg1353.tistory.com/35 [ElasticSearch] Nori 분석기, 오타 보정(fuzzy), 로그스태시(logStash) 노리 분석기 레퍼런스1 : https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.2-nori 6.7.2 노리 (nori) 한글 형태소 분석기 - Elastic 가이드북 이번 장에서는 elasticsearch가 데이터를 저장하는 색인 과정에서 csg1353..
[ElasticSearch] Nori 분석기, 오타 보정(fuzzy), 로그스태시(logStash) 노리 분석기레퍼런스1 : https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.2-nori 6.7.2 노리 (nori) 한글 형태소 분석기 - Elastic 가이드북이번 장에서는 elasticsearch가 데이터를 저장하는 색인 과정에서 처리하는 수많은 작업들에 대해 알아보았습니다. 텍스트 분석 및 텀의 개념과, 데이터 분석에 사용되는 애널라이저, 토크나이저,esbook.kimjmin.net 잘 설명한 글https://hanamon.kr/elasticsearch-%EA%B2%80%EC%83%89%EC%97%94%EC%A7%84-nori-%ED%98%95%ED%83%9C%EC%86%8C-%EB%B6%84%EC%84%9D%EA%B8%B0-%EA%B2%8..
[ElasticSearch] 엘라스틱서치 - Springboot 연동 이슈 이번 프로젝트간 우리 서버는 총 두대이다. (편의상 본체 서버 A, 서브 서버 B로 부르겠다.) ElasticSearch(특히 kibana)와 스크래퍼가 자원을 많이 먹기에, 보조 서버 B에 기능을 할당해놓은 상태이다. 그리고 주요 로직은 A 서버에 집중되어 있다. 따라서 A 서버의 springboot와 B 서버의 ElasticSearch를 연동해야 한다. 이 과정에서 자연스럽게 원격 접근을 위해 X-pack등의 보안 기능을 고려해야 한다는 점을 이제야 깨닫았다. 다행스럽게도 7.1~7.2 버전부터 해당 기능이 부분적으로 무료로 풀린 듯 하다. 7.2 version x-pack 공식 docs : https://www.elastic.co/guide/en/elasticsearch/reference/7...
짧게 진행하는 이번주 회고 성과 : 스크래퍼 적용 완료 본격적으로 셀레니움을 통한 플랫폼 별 정보 수집이 가능하게 되었다. MongoDB에 1차 분류 텍스트들을 현재 보관 중이다. ElasticSearch 학습 본격적인 개발에 앞서 필요한 기능들에 대해 학습하고 정리하는 시간을 가졌다. 인덱스, 도큐먼트, 쿼리, 분석기, 필터링, 그리고 더해서 노드와 클러스터의 개념까지. 이제 스크래퍼를 통해 데이터를 수집하는 만큼, 정말로 검색 기능 및 유사도 측정 기능을 완성해야 한다.
[ElasticSearch] 8. 클러스터와 노드의 구조 기본 개념 클러스터(Cluster) 일반적으로 컴퓨터 시스템에서의 클러스터는 여러 컴퓨터를 병렬로 연결하여 하나의 시스템으로 묶는다는 개념으로 쓰인다. 이렇게 하면 시스템 장애를 대비해 고가용성을 챙기며, 시스템 성능도 높일 수 있기 때문이다. (하나가 고장나도 다른 컴퓨터가 이를 대체하며, 병렬 처리를 가능하게 한다.) ElasticSearch에서는 여러 노드들의 집합을 의미한다. 클러스터는 하나의 유니크한 이름으로 식별되며, 이 이름은 클러스터에 참여하는 노드들이 연결될 때 사용된다. 노드(Node) 엘라스틱 서치에서 클러스터의 일부로 동작하는 인스턴스. 일반적으로 한 개의 컴퓨터(혹은 서버)에 하나의 노드를 구성한다. 이는 물리적/가상적 단위로도 구분되기도 한다. 데이터의 저장과 색인, 검색 작업을..