본문 바로가기

전체 글

(41)
[Elasticsearch] 데이터 색인과 텍스트 분석 이번 글에서는 2가지를 정리해 보려고 합니다. 역 인덱스(Inverted index) 텍스트 분석과정(Text Analysis) 참고로 이번에 사용하는 이미지는 https://esbook.kimjmin.net/06-text-analysis/6.1-indexing-data에서 인용하였습니다. 역 인덱스(Inverted index) 역 인덱스를 알아보기 전에 RDBMS에 대해서 먼저 알아보도록 하겠습니다. Oracle이나 MySql같은 관계형데이터베이스는 "fox"라는 단어가 들어 있는 데이터를 검색할 때, Text컬럼을 한줄씩 내려오면서 검색하게 됩니다. 이럴경우 테이블에 데이터가 많으면, 모든 로우를 읽고 판단해야하기 때문에 시간이 오래걸리게 됩니다. Elasticsearch에서는 데이터를 저장할 때, ..
[Elasticsearch] Query DSL : Bool Range 이번 글에서는 2가지를 정리해 보려고 합니다. 복합(Bool) 쿼리 - (must, must_not, should, filter) 범위(Range) 쿼리 - (숫자/날짜값 범위검색) 복합(Bool) 쿼리 - (must, must_not, should, filter) 4가지의 복합쿼리를 알아보기 전에 기본적인 개념을 잡고 가도록하겠습니다. Bool쿼리는 아래와 같은 4개의 인자를 가지고 있으며, 각 인자 안에 각각의 쿼리를 배열 형식으로 넣도록 되어있습니다. must : 쿼리가 참인 도큐먼트를 검색합니다. must_not : 쿼리가 거짓인 도큐먼트를 검색합니다. should : 이 쿼리에 해당하는 도큐먼트의 점수를 올립니다. filter : 쿼리가 참인 도큐먼트들만 검색하지만, 점수를 계산하지 않아 mus..
[Elasticsearch] Query DSL : 풀텍스트(Full Text) 이번 글에서는 2가지를 정리해 보려고 합니다. 풀텍스트 쿼리 (match, match_phrase, query_string) Relevency (연관성/정확도) 풀텍스트 쿼리(match, match_phrase, query_string) 먼저 공부하기위해 사용할 데이터를 넣어줍니다. 5가지의 데이터를 넣고 본격적으로 Elasticsearch에서 사용하는 주요 쿼리를 알아보겠습니다. match 아래의 쿼리는 message필드에서 "dog"가 들어있는 데이터를 조회한 쿼리입니다. match검색과 같은경우는 여러개의 검색어를 넣을경우 기본으로 OR연산을 실행합니다. 그 결과 quick이 들어간 데이터도 찾아서 뿌려주게되는 결과를 얻었습니다. 검색조건이 OR이 아닌 AND로 변경하고 싶을경우에는 operator..
[Elasticsearch] CRUD(입력, 조회, 수정, 삭제, 검색) 이번 글에서는 3가지를 정리해 보려고 합니다. CRUD명령어 벌크 API - (_bulk) 검색 API - (_search) window는 cmd창 mac은 terminal창에서 명령어를 직접 사용하여 데이터를 저장하거나 수정이 가능하지만, 저는 Kibana의 DevTools를 사용하여 학습을 진행하려고 합니다. 이 글은 아래 링크를 참조하여 작성되었습니다. https://esbook.kimjmin.net/04-data/4.2-crud 4.2 CRUD - 입력, 조회, 수정, 삭제 이 문서의 허가되지 않은 무단 복제나 배포 및 출판을 금지합니다. 본 문서의 내용 및 도표 등을 인용하고자 하는 경우 출처를 명시하고 김종민(kimjmin@gmail.com)에게 사용 내용을 알려주시기 바랍 esbook.kim..
[Elasticsearch] Kibana 설정 및 실행 이번 글에서는 3가지를 정리해 보려고 합니다. 전체 클러스터 아키텍쳐 구성(현재(Kibana 미실행) -> 학습(Kibana 설정 및 실행)) Kibana.yml파일 환경설정 Kibana 실행 전체 클러스터 아키텍쳐 구성 지금까지 구성한 아키텍쳐는 3개의 노드를 es-cluster로 구성하였고, 2개의 방화벽을 추가하여 외부 및 내부의 통신을 할 수 있도록 설정해두었습니다. 지금부터 구성하게 될 아키텍쳐는 Kibana서버를 실행하고 방화벽 설정을 통하여 Client(외부)에서 Kibana서버에 접근이 가능하도록 구성을 하려고합니다. 그리고 Kibana는 elastic-3에서 실행하려고 합니다.(현재 이미지는 elastic-4라고 되어있음) 참고로 방화벽 관련 설정은 아래 영상을 참고하였습니다. https..
[Elasticsearch] 클러스터 구성 이번 글에서는 3가지를 정리해 보려고 합니다. 클러스터 아키텍처 구성도(현재(단일) -> 학습(여러개)) 추가 노드를 위한 VM인스턴스 생성 및 방화벽 설정 3개의 노드로 클러스터 구성 참고로 클러스터 아키텍처를 구성하는데 아래 영상을 참고하였습니다. https://www.youtube.com/watch?v=LM5IqDTWN60&list=PLhFRZgJc2afp0gaUnQf68kJHPXLG16YCf&index=8 클러스터 아키텍처 구성도(현재(단일) -> 학습(여러개)) 아래 그림은 클라이언트가 elastic이라는 태그로 9200번 포트를 열고 filter IP를 0.0.0.0/0으로 설정하여 외부 어느곳에서 접근 가능하도록 설정을 한 방화벽을 통해 elastic-1호스트에 접근할 수 있는 클러스터 구성..
[Elasticsearch] network.host설정과 bootstrap체크 이번 글에서는 3가지를 정리해 보려고 합니다. elasticsearch 클러스터 구성을 위한 network.host설정 설정값을 변경하는 과정에서 나타나는 bootstrap체크 외부에서 elasticsearch서버에 접근 network.host설정 일단 network.host는 elasticsearch가 실행되는 서버의 ip주소입니다. network.host는 config/elasticsearch.yml파일에서 설정 할 수 있는데 평소에는 주석처리가 되어있어서 Elasticsearch노드가 개발 모드로 실행이 됩니다. 만약에 이 설정을 Elasticsearch의 실제 IP주소로 변경하게 된다면, 운영 모드로 실행이 되어 부트스트랩 체크를 하게 됩니다. elasticsearch.yml파일에 network...
[Elasticsearch] 클러스터와 노드 바인딩 이번 글에서는 elasticsearch 클러스터 구성도와 다수의 노드가 차례대로 바인딩되는 과정을 보여드리려고 합니다. elasticsearch 클러스터는 아래 링크를 참고하여 작성하였습니다. https://esbook.kimjmin.net/03-cluster/3.1-cluster-settings 3.1 클러스터 구성 이 문서의 허가되지 않은 무단 복제나 배포 및 출판을 금지합니다. 본 문서의 내용 및 도표 등을 인용하고자 하는 경우 출처를 명시하고 김종민(kimjmin@gmail.com)에게 사용 내용을 알려주시기 바랍 esbook.kimjmin.net 여러 서버에서 각 노드 실행 위와 같은 엘라스틱서치 구성은 실제 서버1개당 노드1개가 실행되고 있는 모습입니다. 엘라스틱 노드는 클라이언트 통신을 위한..