Elasticsearch (ELK) (22) 썸네일형 리스트형 7-2. 데이터 색인과 텍스트 분석(실전) - 애널라이저 & 토큰필터 1. 애널라이저 - Analyzer Elasticsearch 에는 애널라이저를 조합하고 그 동작을 자세히 확인할 수 있는 API 들이 있다. _analyze 텍스트 분석 // Request GET _analyze { "text": "The quick brown fox jumps over the lazy dog", "tokenizer": "whitespace", "filter": [ "lowercase", "stop", "snowball" ] } // Response { "tokens" : [ { "token" : "quick", "start_offset" : 4, "end_offset" : 9, "type" : "word", "position" : 1 }, { "token" : "brown", "star.. 7-1. 데이터 색인과 텍스트 분석(이론) 1. 역 인덱스 - Inverted Index 검색 시 모든 Row안의 모든 내용을 모두 읽어야 되는 전통적인 RDBMS와 다르게 Elasticsearch는 데이터를 저장할 시 역 인덱스(Inverted Index)라는 구조를 만들어 저장한다. 역 인덱스는 책의 맨 뒤에 있는 주요 키워드라고 생각하면 된다. Elasticsearch는 데이터가 늘어나도 찾아가야 할 행이 늘어나는 것이 아니라 역 인덱스가 가리키는 id의 배열값이 추가되는 것 뿐이기 때문에 큰 속도의 저하 없이 빠른 속도로 검색이 가능합니다. 이런 역 인덱스를 데이터가 저장되는 과정에서 만들기 때문에 Elasticsearch는 데이터를 입력할 때 저장이 아닌 색인을 한다고 표현합니다. 2. 텍스트 분석 - Text Analysis Elast.. 6. 쿼리 1. 풀 텍스트 쿼리 Match_all // 쿼리 없이 실행 GET my_index/_search { "query":{ "match_all":{ } } } // match_all 쿼리로 실행 GET my_index/_search { "query":{ "match_all":{ } } } Match GET my_index/_search { "query": { "match": { "message": "dog" } } } 만약 여러검색어를 아무 Operator 없이 검색하면 Default로 OR 조건으로 검색하게 된다 GET my_index/_search { "query": { "match": { "message": "quick dog" } } } 만약 Operation를 넣기 원하면 operator field.. 5. Elasticsearch 데이터 처리 - REST API RestFul하지 않은 시스템에서의 처리 입력 : http://user.com/input.jsp?name=kim&age=38&gender=m 조회 : http://user.com/get.jsp?name=kim 삭제 : http://user.com/delete.jsp?name=kim RestFul한 시스템에서의 처리 입력 : PUT http://user.com/kim -d {"name":"kim", "age":38, "gender":"m"} 조회 : GET http://user.com/kim 삭제 : DELETE http://user.com/kim CRUD - 입력, 조회, 수정, 삭제 7.X버전 이후부터는 도큐먼트 타입이란 개념이 사라지고 _doc이란 고정자를 사용한다. http://://_doc/ 입력.. 4. 마스터 노드와 데이터 노드 마스터 노드 - 메타 데이터, 샤드의 위치와 같은 클러스터 상태 정보를 관리 노드와 샤드들의 개수가 많아지게 되면 모든 노드들이 마스터 노드의 정보를 계속 공유하는 것은 부담될 수 있으므로 마스터 후보 노드들만 따로 선출 가능하다 이 때 노드설정을 node.master: false로 설정해주면 되겠다. 데이터 노드 - 실제 색인된 데이터를 저장하고 있는 노드 만약 특정 노드를 마스터후보로 설정하되 데이터 저장을 하고싶지 않다면 node.data: false로 설정하면 되겠다. 예제 실제 운영 환경에서는 위 예제처럼 마스터 후보를 노드는 1개만 설정하면 안 되고 최소 3개 이상의 홀수개로 설정해야 합니다. 이유는 다음의 Split Brain 문제에서 설명합니다. Split Brain 위와 같이 네트워크 단.. 3-2. Elasticsearch 시스템 구조 - 인덱스와 샤드 Document - 단일 데이터 단위 Index - Document의 집합 Shard - 인덱스를 이루는 집합 단위 프라이머리 샤드(Primary Shard)와 복제본(Replica) 버전 7.0 에서의 Default 샤드 개수는 1개이다 (6.X 이하버전에서는 5개). 처음 생성된 샤드는 프라이머리 샤드(Primary Shard)라 불리우고 복제본은 리플리카(Replica)라고 불리운다 예를들어 하나의 클러스터에 5개의 샤드, 그리고 4개의 노드가 구성되어 있다면 총 10개(복재본 5개 포함)의 샤드들이 노드 전체에 골고루 분배되어 저장된다. 같은 프라이머리 샤드와 복제본은 동일한 데이터를 담고 있으며 반드시 서로 다른 노드에 저장 된다. 샤드 개수 설정 프라이머리 샤드 수는 익덱스를 처음 생성할 때 .. 3-1. Elasticsearch 시스템 구조 - 클러스터 구성 여러 서버에 하나의 클러스터로 실행 일반적으로 1개의 물리 서버마다 하나의 노드를 실행하는것을 권장한다. 물리적인 구성과 상관 없이 여러 노드가 하나의 클러스터로 묶이기 위해서는 클러스터명 cluster.name 설정이 묶여질 노드들 모두 동일해야 합니다. 같은 서버나 네트워크망 내부에 있다 하더라도 cluster.name이 동일하지 않으면 논리적으로 서로 다른 클러스터로 실행이 되고, 각각 별개의 시스템으로 인식이 됩니다. 하나의 서버에서 여러 클러스터 실행 더보기 참고로 클러스터 상태를 보는 명령어는 curl -X GET http://192.168.179.81:9200/_cluster/health?pretty elasticsearch.yml를 수정하여 변경 #각 상황에 맞게 input 변경 clust.. 2. Elasticsearch 환경 설정 Elasticsearch 는 각 노드들 별로 실행될 설정들을 적용함으로써 노드들의 역할을 나누거나 클러스터의 속성을 결정하게 됩니다. Elasticsearch의 실행 환경을 설정하는 방법은 크게 2가지가 있다. Home Directory > Config 경로 아래 있는 파일 변경 (e.g. for Mac - /usr/local/etc/elasticsearch/elasticsearch.yml) 시작 명령어로 설정 I. 설정 파일을 통해 설정하기 각 설정파일이 하는일 jvm.options - Java 힙메모리 및 환경변수 elasticsearch.yml - Elasticsearch 옵션 log4j2.properties - 로그 관련 옵션 A. jvm.options Elasticsearch는 Java의 가상머.. 이전 1 2 3 다음 목록 더보기