분류 전체보기
-
ES - 텍스트 분석🔍 elastic search 2022. 9. 22. 13:53
역색인 구조 Elasticsearch는 역색인 구조를 사용해 데이터를 빠르게 검색할 수 있다. 각 문서의 text를 term으로 분할하고, term 들을 도큐먼트와 매핑 특정 키워드(term)로 포함하고 있는 문서들에 대한 Primary Key를 맵핑하는 인덱스 테이블 생성 인덱스 테이블을 활용하여 빠른 문서 탐색이 가능하다. 주로 BTree, Trie, Hash Table 등의 자료구조를 활용하여 구현 단점 영어의 경우 대소문자를 다른 텍스트로 인지한다. 복수형과 단수형이 동일하게 검색되지 않는다. jump, leap는 같은 의미지만 다른 텍스트로 인지 → 텍스트 분석을 통해 해결 텍스트 분석 Elasticsearch는 문자열 필드가 저장될 때 데이터에서 검색어 토큰을 저장하기 위해 여러 단계의 처리 ..
-
ES - 데이터 검색🔍 elastic search 2022. 9. 21. 19:55
ES는 검색에 사용하기 위한 데이터를 저장할 때 Term 으로 분석 과정을 거쳐 저장하기 때문에 검색 시, 대소문자, 단수나 복수, 원형 여부와 상관없이 검색이 가능하다. 이러한 특징을 Full Text Search ( = 전문 검색) 이라고 한다. Query DSL Elasticsearch는 검색을 위한 쿼리 기능을 제공 이런 데이터 시스템에서 제공하는 쿼리 기능을 Query DSL(Domain Specific Language) 이라고 이야기 한다. Elasticsearch의 Query DSL은 모두 JSON 형식으로 입력 검색 API를 사용해 Elastic search 데이터 스트림 또는 인덱스에 저장된 데이터를 검색하고 집계할 수 있다. API 쿼리 요청 본문 매개 변수는 Query DSL로 작성된..
-
ES - 기본 API🔍 elastic search 2022. 9. 21. 19:42
Index, Type, Document에 대한 CRUD API Index - RDBMS의 database 같은 개념 Type - RDBMS의 table 개념 Document - RDMBS의 ROW 같은 개념 입력 (PUT) 데이터 입력시 PUT 메서드를 이용 조회 (GET) GET 메서드로 가져올 도큐먼트의 URL을 입력시 도큐먼트의 내용을 가져온다. 삭제 (DELETE) DELETE 메서드를 이용해서 도큐먼트 또는 인덱스 단위의 삭제가 가능 수정 (POST) POST 메서드는 PUT 메서드와 유사하게 데이터 입력에 사용 가능 도큐먼트 id 의 자동 생성은 PUT 메서드로는 동작하지 않는다. ES API 구조 💡 http://://_doc/ 인덱스 클러스터에 존재하는 모든 index 조회 curl -XG..
-
Docker로 ES 설치하기🔍 elastic search 2022. 9. 21. 19:34
ES를 설치하는 방법 컴퓨터에 직접 ES 설치 docker를 사용해서 ES 설치 docker를 사용하면 elasticsearch, kibana 를 설치한 이미지를 내려받기만 하면 관련 서버를 손쉽게 구성할 수 있다. docker에 ES 설치하기 ES 이미지 다운로드 docker pull elasticsearch:{version} docker 이미지가 정상적으로 다운되었는지 확인 docker images elasticsearch가 있으면 정상적으로 설치가 된것이다. Docker 실행 ES 이미지를 정상적으로 받으면, docker 명령어를 통해 컨테이너를 실행 docker run -d -p 9200:9200 -p 9300:9300 -e "discover.type=single-node" --name elast..
-
ElasticSearch🔍 elastic search 2022. 9. 20. 18:14
Apache Lucene(아파치 루씬) 기반의 Java 오픈 소스 분산형 RESTful 검색 및 분석 엔진 Elasticsearch를 통해 루씬 라이브러리를 단독으로 사용할 수 있으며, 방대한 양의 데이터를 신속하게( 거의 실시간) 저장, 검색, 분석을 수행할 수 있다. 특히 정형 데이터, 비정형 데이터, 지리 데이터등 모든 타입의 데이터 처리 가능ES는 JSON 문서(Document)로 데이터를 저장하기 때문 HTTP 프로토콜로 접근이 가능한 REST API를 통해 데이터 조작을 지원 ElasticSearch는 단독 검색을 위해 사용하거나, ELK(ElasticSearch & Logstash & Kibana) 스택을 기반으로 사용 주로 ELK는 로드밸런싱되어 있는 WAS의 흩어져 있는 로그를 한 곳으로..
-
1장 - 객체, 설계📕 book/오브젝트 2022. 9. 18. 18:07
티켓 판매 애플리케이션 로버틴 마틴은 소프트웨어 모듈이 가져야 하는 세 가지 기능에 관해 설명 모듈 : 크기와 상관없이 클래스나, 패키지, 라이브러리 같은 프로그램을 구성하는 임의의 요소 모든 소프트웨어 모듈에는 3가지 목적이 있다. 실행 중에 제대로 동작하는 것. 변경을 위해 존재하는 것. ( = 변경이 용이 ) 코드를 읽는 사람과 의사소통하는 것 ( = 이해하기 쉬워야 한다. ) 예상을 빗나가는 코드 이해 가능한 코드 : 동작이 우리의 예상에서 크게 벗어나지 않는 코드 상식과는 너무나도 다르게 동작 코드를 읽는 사람과 제대로 의사소통하지 못한다. 코드를 이해하기 위해 여러 가지 세부적인 내용들을 한번에 기억하고 알고 있어야 한다. 코드를 작성하는 사람, 읽고 이해해야 하는 사람 모두에게 부담 변경에 ..
-
Kafka 스트림즈 구현📕 book/아파치 카프카 2022. 9. 18. 18:01
스트림즈 DSL을 이용하여 구현 스트림즈 DSL - stream(), to() 특정 토픽을 KStream 형태로 가져오려면 스트림즈 DSL의 stream() 메서드를 사용하면 된다. KStream의 데이터를 특정 토픽으로 저장하려면 스트림즈 DSL의 to() 메서드를 사용하면 된다. build.gradle 스트림즈 애플리케이션을 개발하기 위한 라이브러리 추가 dependencies { compile 'org.apache.kafka:kafka-streams:2.5.0' } SimpleStreamApplication.java 스트림 프로세싱을 위한 코드를 스트림즈DSL로 작성 package com.example; import org.apache.kafka.common.serialization.Serdes; ..
-
3장 - 카프카 스트림즈📕 book/아파치 카프카 2022. 9. 18. 17:57
카프카 스트림즈 💡 토픽에 적재된 데이터를 상태기반(Stateful) 또는 비상태기반(Stateless)으로 실시간 변환하여 다른 토픽에 적재하는 라이브러리이다. 카프카의 스트림 데이터 처리를 위해 아파치 스파크 아파치 프링크 아파치 스톰 플루언트디 와 같은 다양항 오픈소스 애플리케이션이 존재하는데 ❓ 카프카 스트림즈를 사용해야 하는 이유 ❗스트림즈는 카프카에서 공식적으로 지원하는 라이브러리!! 카프카 버전이 오를 때 마다 스트림즈 자바 라이브러리도 같이 릴리즈 된다. 때문에, 자바 기반 스트림즈 애플리케이션은 카프카 클러스터와 완벽하게 호환되면서 스트림 처리에 필요한 편리한 기능들(신규 토픽 생성, 상태 저장, 데이터 조인 등)을 제공한다. 스트림즈 애플리케이션 또는 카프카 브로커의 장애가 발생하더라도..