본문 바로가기

프로젝트/여행지 오픈 API

(32)
[ElasticSearch] 6. 검색 : 컨텍스트와 쿼리, 유사도 컨텍스트 구버전의 엘라스틱서치는 쿼리 컨텍스트와 필터 컨텍스트로 구분되었다고 한다. 쿼리 컨텍스트는 질의에 대한 유사도를 계산하고 정확한 결과를 구분하고, 필터 컨텍스트는 유사도가 아닌 일치 여부에 따른 결과만을 계산했다. 두 컨텍스트의 개념에 대해 조금 더 자세히 알아보자. 쿼리 컨텍스트 - 유사도를 구분하여 검색 (ex : 스코어가 4.5인 검색 결과) - 유사도 검색 때문에 검색 속도가 상대적으로 느림 //Kibana에서 제공하는 샘플 데이터를 사용하여 쿼리컨텍스트를 실행해보자. //_search : 엘라스틱에서 제공하는 REST API GET kibana_sample_data_ecommerce/_search { "query": { "match": { //전문 검색을 위한 쿼리, 역인덱싱용 용어 검..
[ElasticSearch] 5. 분석기(Analyzer)와 토크나이저, 필터 분석기(Analyzer) 엘라스틱 서치는 전문 검색을 지원하기 위해 역인덱싱을 지원한다. 전문 검색은 장문 문자열에서 부분 검색을 수행하는 것이며, 이 장문의 문자열을 작은 단위(Token)으로 쪼개는 것을 역인덱싱이라고 한다. 양질의 결과를 위해, 문자열을 나누는 기준이 중요하며(지금까지의 예제인 standard는 일부분이긴 하지만 “ “공백으로 나눴다.), 이를 위해 ‘캐릭터 필터’, ‘토크나이저’, ‘토큰 필터’ 로 구성된 분석기 모듈을 가지고 있다. 캐릭터 필터 : 옵션 토크나이저 : 반드시 포함 토큰 필터 : 옵션 개념과 이해 분석기의 역할은 크게 두 부분으로 나눌 수 있다: 인덱싱 시: 도큐먼트를 인덱스에 추가할 때, 분석기는 텍스트 필드를 토큰으로 분리하고, 필요한 경우 추가적인 처리(예: ..
[ElasticSearch] 4. 필드와 멀티 필드, 인덱스 템플릿 필드와 멀티 필드 전문 검색의 경우 검색과 동시에 정렬이 필요한 경우도 있다. 이럴 경우 단일 필드 입력에 여러 하위 필드를 정의하여 사용한다. 필드 Elasticsearch의 문서는 여러 개의 필드(field)로 구성된다. 각 필드는 특정한 데이터 타입을 가진다. 예를 들면, string, integer, date 등이 있다. 매핑(mapping)에서는 각 필드의 데이터 타입, 분석 방법 등을 정의한다. { "properties": { "title": { "type": "text" } } } 멀티 필드 (Multi-field) 멀티 필드는 하나의 필드를 여러 방식으로 인덱싱하려고 할 때 사용된다. 예를 들어, 텍스트 필드가 있을 때, 한 번은 원본 텍스트로, 다른 한 번은 키워드로 인덱싱하고 싶다면 멀..
[ElasticSearch] 3. 벌크 데이터와 매핑, 데이터 타입과 문자열 처리 [ES]벌크 데이터와 매핑, 데이터 타입과 문자열 처리 벌크 데이터와 매핑 과정 벌크 데이터 벌크 데이터는 여러 개의 데이터 레코드가 모여 있는 것이다. 일반적으로 단일 작업으로 한 번에 처리될 수 있도록 모여있는 데이터 묶음으로, Elasticsearch에서는 REST API 호출 회수를 줄이고, 한번에여러 개의 인덱싱, 수정, 삭제 작업을 요청하기 위해 사용한다. 단, bulk API는 읽기 작업을 지원하지 않는다. //해당 형태는 Json처럼 보이지만, NDJSON 형태이니 유의할 것. POST /_bulk { "index" : { "_index" : "index1", "_id" : "1" } } { "field1" : "value1" } { "delete" : { "_index" : "index1..
[ElasticSearch] 2. 다이나믹 매핑, 도큐먼트 CRUD [ES]인덱싱 : 다이나믹 매핑, 도큐먼트 CRUD 공식 Docs ref: https://www.elastic.co/guide/en/elasticsearch/reference/7.11/index.html 이전 포스팅에 이어 인덱싱을 마저 확인해보자. 다이나믹 매핑 만약 인덱싱된 값에 추가 도큐먼트를 넣을때, 필드 프로퍼티가 다를 경우 엘라스틱 서치는 어떻게 동작할까? 만약 다음과 같이 구문을 작성했다 가정해보자. //1. 다른 프로퍼티 'country'의 추가 PUT index2/_doc/2 { "name" : "jane", "country" : "france" } //이 경우 기존 필드를 사용하지 않고, 새로운 프로퍼티를 추가했지만 문제없이 인덱싱이 가능하다. //2. 도큐먼트 매핑 PUT index2..
[개발]셀레니움을 사용한 스크래핑 구현 ref : https://mollangpiu.tistory.com/362 https://velog.io/@rednada1486/Java-Selenium-활용-동적웹크롤링#️-2-selenium과-chromedriver-다운로드 셀레니움 Selenium은 웹 브라우저를 자동화하는 도구다. 주로 웹 앱 테스팅에 사용되지만, 스크래핑에도 널리 쓰인다. Java, Python 등 여러 언어를 지원하며, 복잡한 웹 페이지에서도 데이터를 추출할 수 있다. 실행 방식 Selenium 코드는 서버 측에서 실행된다. 이 코드는 웹 드라이버 API를 통해 웹 브라우저를 제어한다. 사용자의 로컬 머신에서 크롬을 직접 실행하는 것은 아니다. 크롬 드라이버 필요성 Selenium은 웹 드라이버 인터페이스를 사용해 브라우저를 제..
[ElasticSearch] 1. 도큐먼트와 인덱스 엘라스틱 스택 도서 1회차 사전 지식 엘라스틱 서치 엘라스틱 서치 = 검색엔진 + 데이터베이스 엘라스틱서치는 NoSQL과 유사하다고 생각하면 이해가 편할 것이다. 엘라스틱 서치는 인덱싱 시점에서 분석을 거쳐 단어 단위로 분해된다. 스코어링 : 유사도 점수 기반 스코어링을 통해 유사 검색어를 분류 가능 분산 시스템과 클러스터링 : 여러 엔진을 클러스터링, 하나가 다운되어도 여분의 기능이 동작 가능 DSL 쿼리 채용 : JOIN 쿼리가 사실상 어려움, 반정규화를 기본으로 함 인덱스가 불변하기에, 삭제 등 비용이 비싸다. 하지만 이는 빠른 검색을 위한 것으로, 대용량 데이터에 대해 빠른 검색과 집계를 제공한다는 장점과 trade-off 된 것이다. 키바나(Kibana) 엘라스틱 서치의 시각화 도구. UI를 담..
[ElasticSearch, Kibana] 개발 환경 세팅 서버는 EC2(Ubuntu 20.04) 우분투 위에 올림을 가정한다. Elastic Search 버전 및 설치 https://www.elastic.co/kr/support/matrix 해당 사이트에서 현재 OS와 맞는 버전을 선택하자. 본인은 7.11.x를 사용할 것이다. JDK 설치(7.x 버전 이상은 설치하지 않아도 괜찮다.)버전 확인 sudo apt update sudo apt install openjdk-11-jdk java -version Elasticsearch 7.11.x 설치 HTTPS를 위한 패키지 설치: sqlCopy code sudo apt-get update sudo apt-get install apt-transport-https ca-certificates wget Elastics..