본문 바로가기

분류 전체보기55

7. 인덱스 설정과 매핑 7. 인덱스 설정과 매핑 데이터의 저장 및 검색 방법에 대한 설정이나 사용자 정의 애널라이저는 인덱스 단위로 저장된다. 7.1 설정 - Settings 인덱스는 두 개의 정보 단위, settings 와 mappings로 이루어진다. settings 또는 mappings 를 보는 보는 방법은 각각 _settings API 나 _mappings API를 사용한다. 대부분의 설정은 한 번 지정하면 변경할 수 없다. 샤드와 복제본 수 설정 number_of_shards와 number_of_replicas 라는 이름으로 "settings" - "index" 아래에 설정한다. PUT my_index { "settings": { "index": { "number_of_shards": 3, "number_of_repl.. 2021. 9. 6.
6. 데이터 색인과 텍스트 분석 6. 데이터 색인과 텍스트 분석 풀텍스트 검색을 위해서는 원본 데이터를 검색에 맞게 가공해야 한다. 엘라스틱서치는 데이터를 저장하면서 데이터를 가공한다. 6.1 역인덱스 Full text 검색을 할 때는 역인덱스 구조가 유리하다. key는 term으로, value는 해당 term을 저장하고 있는 문서 번호를 저장한다. 역인덱스는 데이터가 저장될 때 만들어진다. 따라서 엘라스틱서치에서 데이터를 저장하는 과정을 인덱싱(색인)이라고 한다. 6.2 텍스트 분석 텍스트 분석: 원본 데이터로부터 검색어 토큰을 만들어서 저장하는 과정이다. 텍스트 분석 결과는 검색에만 사용되지, 원본 데이터는 변경되지 않는다. 애널라이저: 텍스트 분석을 담당하는 모듈이다. 캐릭터 필터: 전체 문장에서 특정 문자를 제거한다. 애널라이저.. 2021. 9. 6.
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.