본문 바로가기

전체 글55

5. 검색과 쿼리 5. 검색과 쿼리 - Query DSL 검색: 수많은 대상 데이터 중에서 조건에 부합하는 데이터로 범위를 축소하는 행위 엘라스틱서치 Query DSL은 JSON 형식이다. 1) 풀텍스트 쿼리 match_all: 조건없이 해당 인덱스의 모든 도큐먼트를 검색한다. 쿼리 없이 실행하는 것과 같은 결과를 되돌려준다. GET my_index/_search { "query":{ "match_all":{ } } } match 검색에 사용되는 일반적인 쿼리 기본적으로 띄어쓰기는 OR 조건으로 검색되나, operator 옵션으로 변경할 수 있다. GET my_index/_search { "query": { "match": { "message": "quick dog" # field: value 형태 } } } GET my.. 2021. 9. 5.
Part 4 - 클래스, 객체, 인터페이스 4. 클래스, 객체, 인터페이스 코틀린의 클래스와 인페이스는 자바와는 약간 다르다. 인터페이스도 프로퍼티를 가질 수 있으며, 기본적으로 final과 public이다. 중첩 클래스는 외부 참조를 가지지 않는다. 롬복 @Data를 네이티브하게 구현할 수 있다 object는 클래스와 인스턴스를 선언과 동시에 생성하는 키워드이다. 4.1 클래스 계층 정의 4.1.1 인터페이스 코틀린 인터페이스는 자바 인터페이스와 비슷하다. 자바8처럼 구현체가 있는 메서드를 가질 수 있다. interface Clickable{ fun click() fun showOff() = println("I`m clickable!") } interface Focusable{ fun showOff() = println("I`m Focusabl.. 2021. 9. 5.
4. 데이터 처리 4. 데이터 처리 엘라스틱서치는 검색, 저장, 설정 등 모든 정보를 JSON 도큐먼트 형식으로 주고받는다. 엘라스틱서치는 자원별로 고유한 URL을 매핑해서 사용한다. REST API를 활용해 CRUD가 가능하다. curl 명령어나 postman, kibana devtools를 사용할 수 있다. (키바나 포트는 5601) CRUD 도큐먼트를 접근할 때는 /_doc/ 처럼 고정자 _doc 을 사용한다. curl -XPUT "http://localhost:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d' (d는 데이터 입력 옵션) 데이터를 입력할 때는 PUT 메서드를 사용한다. PUT 메서드 사용시 아이디는 자동으로 생성되지 않는다. PUT my_i.. 2021. 8. 31.
3. 시스템 구조 3. 시스템 구조 엘라스틱서치는 항상 클러스터로 동작한다. 1개의 노드만 있어도 클러스터로 구성된다. 클러스터 구성 9200~9299: 클라이언트와 통신하기 위한 http 포트 9300~9399: 노드 간 데이터를 교환하기 위한 tcp 포트 물리 서버마다 하나의 노드를 실행하는 것을 권장한다. 같은 물리 서버 내라고 해도 cluster.name이 같아야 같은 클라이언트로 인식한다. bin/elasticsearch -Ecluster.name=~ -Enode.name=~ 으로 실행 시 옵션을 지정한다. 엘라스틱서치 실행 후 로그에서 포트 바인딩 정보를 확인할 수 있다. 모든 클러스터에는 반드시 하나의 마스터 노드가 존재한다. 디스커버리 같은 서버, discovery.seed_hosts에 설정된 네트워크 상의.. 2021. 8. 31.
2. 시작하기 2. 시작하기 용어정리 인덱싱(색인) : 데이터를 검색될 수 있는 구조로 변경하기 위해 원본(소스)을 검색어 토큰들로 변환하여 저장하는 과정 인덱스: 색인된 데이터가 저장되는 저장소. 도큐먼트의 논리적 집합의 단위 검색: 인덱스에서 검색어 토큰들을 포함하고 있는 문서들을 찾아가는 과정 질의: 문서를 찾거나 집계하기 위한 검색어와 검색 조건 환경설정 노드들의 역할을 나누거나 클러스터의 속성을 결정한다. ~./config 경로 아래의 파일을 변경하거나 엘라스틱서치 실행 시 옵션으로 설정할 수 있다. ~/.config/jvm.options : JVM 힙 메모리 설정한다. 시스템 메모리 절반은 루신파일 캐시을 위해 남겨두어야 한다. ~/.config/elasticsearch.yml : 엘라스틱서치와 관련된 대부.. 2021. 8. 31.
1. 서문 1.서문 Elasticsearch는 전문검색뿐 아니라 보안, 로그 분석 등 다양하게 이용된다. Elasticsearch는 주로 ELK 스택, Elasticsearch, Logstash, Kibana와 함께 쓰이며 경량 데이터 수집기인 Beats와도 같이 쓰인다. 모니터링, 클라우드, 머신러닝 서비스도 제공한다. Elasticsearch 데이터를 색인하고, 저장하고, 검색 및 집계 기능 등을 수행한다. 뛰어난 검색 능력과 대규모 분산시스템 기능을 제공한다. 사용법은 간단하다. 실시간으로 인덱싱하자마자 검색 및 집계가 가능하다. Full Text (전문) 검색 및 다양한 점수 기반의 다양한 정확도 알고리즘을 사용할 수 있다. 내부적으로 Inverted File Index 구조를 사용한다. 사용자 관점으로는 .. 2021. 8. 31.
Part 3 - 함수 정의와 호출 Ch.3 함수 정의와 호출 3.1 코틀린에서 컬렉션 만들기 val set = hashSetOf(1,7,53) val list = arrayListOf(1,7,53) val map = hashMapOf(1 to "one", ...) val strings = listOf("first", ...) val numbers = setOf(...) val last = strings.last() val max = numbers.max() 코틀린은 자체 컬렉션을 제공하지 않고 자바 컬렉션에 의존한다. 코틀린의 메서드 익스텐션을 이용해서 자바 컬렉션보다 더 쉽게 컬렉션을 사용할 수 있다. 3.2 함수를 호출하기 쉽게 만들기 3.2.2 디폴트 파라미터값 fun joinToString( collection: Collectio.. 2021. 8. 29.
Part 2 - 코틀린 기초 Ch2. 코틀린 기초 2.1 기본 요소 : 함수와 변수 2.1.1 Hello World fun main(args: Array) { println("Hello World!") } 함수를 선언할 때는 fun 키워드를 사용한다. 변수명 뒤에 타입을 선언한다. 함수를 최상위 수준에 정의할 수 있다. 배열 문법이 따로 존재하지 않는다. 간결성을 위해 자바 메서드를 감싼 Wrapper 메서드가 있다. 세미콜론으르 생략 가능하다. 2.1.2 함수 fun max(a: Int, b: Int): Int = if(a>b) a else b 식(Expression): 값으로 치환될 수 있는 코드 문장(statement): 실행될 수 있는 코드 단위, 값을 만들어내지 않는다. 코틀린은 루프를 제외한 모든 제어 구조가 식이다.->.. 2021. 8. 20.
Part 1 - 코틀린 소개 코틀린이란? 자바 플랫폼(JVM)에서 돌아가는 새로운 프로그래밍 언어이다. 코틀린은 1. 간결하고 2. 실용적이며 3. 상호운용성을 중시하며 4. 안전하다. 코틀린은 범용 프로그래밍 언어로써, 서버 개발, 안드로이드 앱 개발 뿐만 아니라 다양한 분야에서 사용할 수 있다. 코틀인은 정적 타입 지정 언어이다. 객체의 타입을 컴파일 시점에 지정해서 컴파일 타임에 타입 오류를 검증할 수 있다. 정적 타입은 안전하지만 컴파일러에게 더 많은 정보를 제공해줘야하기 때문에 생산성이 떨어진다. 코틀린은 "var x = 1" 처럼 타입 추론 기능을 지원하기 때문에 안전성과 생산성의 트레이드 오프 관계를 벗어난다. 코틀린은 함수형 프로그래밍과 객체지향 프로그래밍을 동시에 지원한다. 코틀린에서 함수는 일반 객체이다. 함수형 .. 2021. 8. 1.