본문 바로가기

Elasticsearch (ELK)

(22)
9. Aggregations 1. Basic // aggregations 입력 GET /_search { "query": { … … }, "aggs": { "": { "": { … … } }, "": { "": { … … } } } } 2. Metrics Aggregations Min, Max, Sum, Avg // my_stations 인덱스의 passangers 필드 합 (sum) 을 가져오는 aggs GET my_stations/_search { "size": 0, "aggs": { "all_passangers": { "sum": { "field": "passangers" } } } } 특정 Query의 합계를 가져오는 예제 // stations 값이 "강남" 인 도큐먼트들의 passangers 필드 합 (sum) 을 가져오는..
8-3. 멀티 필드 - Multi Field 설정 PUT my_index { "settings": { "analysis": { "analyzer": { "nori_analyzer": { "tokenizer": "nori_tokenizer" } } } }, "mappings": { "properties": { "message": { "type": "text", "fields": { "english": { "type": "text", "analyzer": "english" }, "nori": { "type": "text", "analyzer": "nori_analyzer" } } } } } } 위와 같이 매핑을 정의하면 도큐먼트에는 message 필드값만 있어도 message, message.english, message.nori 총 3개의 역 색인이..
8-2. Settings & Mappings - Mappings 1. Dynamic 매핑 동적으로 Mapping이 생성된다면 필드의 값을 보고 타입을 예상한다. 이 때 예상은 가능한 모든 타입중 가장 큰 데이터 타입을 선택한다. (예 125는 값이 작지만 자연수를 저장하는 데이터 타입 중 가장 큰 long으로 저장된다) // books 인덱스가 없는 상태에서 도큐먼트 입력 PUT books/_doc/1 { "title": "Romeo and Juliet", "author": "William Shakespeare", "category": "Tragedies", "publish_date": "1562-12-01T00:00:00", "pages": 125 } // books 인덱스의 매핑 확인 GET books/_mapping //books 인덱스의 매핑 확인 결과 { "..
8-1. Settings & Mappings - Settings 실제 Settings의 설정 값은 대부분 "Settings" -> "Index" 아래에 들어가 있으나 Settings에 입력을 할때 Index를 넣어도 생략해도 된다(아니면 . 을 이용해도 된다). // Basic PUT my_index { "settings": { "index": { "number_of_shards": 3, "number_of_replicas": 1 } } } // my_index 인덱스 생성 - 마침표 . 으로 하위 값 지정 PUT my_index { "settings": { "index.number_of_shards": 3, "index.number_of_replicas": 1 } } // my_index 인덱스 생성 - index 생략 PUT my_index { "settings"..
7-6 형태소 분석 - Stemming 각각의 단어들을 기본 형태로 추출하는 과정을 형태소 분석(Stemming)이라고 불리운다. Snowball 은 2000년 경에 정보 검색의 선구자인 마틴 포터 박사가 개발하여 무료로 공개한 형태소 분석 알고리즘입니다. 보통 ~ing, ~s 등을 제거하여 문장에 쓰인 단어들을 기본 형태로 변경합니다. Elasticsearch 에서 Snowball 은 애널라이저, 토크나이저, 토큰 필터가 모두 정의되어 있다. 사용법은 아래 링크 "7-2. 데이터 색인과 텍스트 분석(실전) - 애널라이저 & 토큰필터"을 참고하자. https://velody.tistory.com/37 Nori - 한글 형태소 분석기 https://esbook.kimjmin.net/06-text-analysis/6.7-stemming/6.7.2..
7-5. 데이터 색인과 텍스트 분석(실전) - Token Filter 토크나이저를 이용한 텀 분리 과정 이후에는 분리된 각각의 텀 들을 지정한 규칙에 따라 처리를 해 주는데 이 과정을 담당하는 것이 토큰 필터이다. 특징은 : 배열 값으로 저장해야 된다(하나만 사용하더라도) 나열된 순서대로 처리되기 때문에 순서를 잘 골라야 한다. 1. Lowercase, Uppercase 대문자 소문자 GET _analyze { "filter": [ "lowercase" ], "text": [ "Harry Potter and the Philosopher's Stone" ] } GET _analyze { "filter": [ "uppercase" ], "text": [ "Harry Potter and the Philosopher's Stone" ] } 2. Stop 불용어(stopword)를..
7-4. 데이터 색인과 텍스트 분석(실전) - Tokenizer Tokenizer는 반드시 한가지만 사용된다. 1. Standard, Letter, Whitespace Standard : 공백으로 텀을 구분하면서 "@"과 같은 일부 특수문자를 제거한다 (중간의 특수문자는 분리하지 않는다). Letter : 알파벳을 제외한 모든 공백 캐릭터를 기준으로 분리한다. Whitespace : 스페이스, 탭, 줄바꿈과 같은 공백만을 가지고 분리한다. 분석할 문장 : "THE quick.brown_FOx jumped! @ 3.5 meters." // standard 토크나이저로 문장 분석 GET _analyze { "tokenizer": "standard", "text": "THE quick.brown_FOx jumped! @ 3.5 meters." } // THE, quick...
7-3. 데이터 색인과 텍스트 분석(실전) - 캐릭터 필터 캐릭터 필터? 캐릭터 필터는 텍스트 분석 중 가장 먼저 처리되는 과정(전체 문장에 대해 적용되는 과정)을 처리하는 도구 1. HTML Strip 입력된 텍스트가 HTML인 경우에 일반 텍스트로 변경이 가능하다 POST _analyze { "tokenizer": "keyword", "char_filter": [ "html_strip" ], "text": "I'm so happy!" } "I'm so happy!" 라는 문장으로 변경 된다. 2. Mapping 특정 캐릭터를 특정 문자로 치환해주는 기능이다(예: C++를 C_plus__plus_로 바꿔줌). coding 인덱스에 mapping 캐릭터 필터 설정 PUT coding { "settings": { "analysis": { "analyzer..