목록전체 글 (85)
엔지니어 블로그

최근에 elasticsearch 공인 자격 시험을 보게 됐고 합격했습니다. 이 시험이 생각보다 한글로 된 정보가 많지 않아서 조금이나마 도움이 되고자 후기를 남기는 글 입니다. 1. 시험 정보 elastic certified engineer는 elasticsearch 에서 시행하는 공인 자격 시험 입니다. 비용은 USD 400$ 입니다. 2. 공부 방법 1. Webinar 시청 시험에 대한 대략적인 내용을 소개하는 공식 영상입니다. https://www.youtube.com/watch?v=dzo_uR3IsbQ https://www.youtube.com/watch?v=hsaLZSKCkF0 과거 영상이기 때문에 현재 진행되는 시험과 완전히 동일하진 않습니다. 하지만 큰 틀에서 봤을 때 시험이 어떻게 진행되는..

Elasticsearch Enrich es는 다양한 데이터 소스의 데이터를 indexing해서 빠른 검색과 분석이 가능하다. 데이터 엔리치먼트 es 7.5 버전 이상부터는 기존 index의 데이터를 새로 인덱싱 되는 index에 원하는 대로 추가하는 작업이 Enrich Processer를 통해 가능해졌다. 다음과 같은 작업이 손쉽게 가능해졌다. ▶ IP address를 통해서 연관된 디바이스나 서비스 정보들을 추가하기 ▶ 상품 주문 데이터의 Product ID를 통해서 상세 제품 정보 데이터를 추가하기 ▶ 이메일 주소를 통해서 상세 컨택 포인트 정보를 추가하기 ▶ GPS의 정보를 통해서 우편 번호 정보를 추가하기 등등 Enrich Processor의 동작 원리 es의 데이터 노드는 ingest 노드 이기..
elasticsearch에서 query로 search를 실행할 때 minimum should match가 적용되는 것이 이해가 되질 않아서 공식문서를 보고 정리해 본 내용이다. Integer 3 integer 로 지정하면 해당 숫자 만큼의 검색어가 일치해는 document만 반환한다. Negative integer -2 총 검색어의 수에서 지정한 수 만큼 뺀 갯수를 최소 필수 갯수로 지정합니다. Percentage 75% 총 검색어에서 지정한 %의 갯수 이상 만큼 일치하는 결과를 반환 Negative percentage -25% 총 검색어에서 지정한 %의 갯수 이상 만큼 일치하는 결과를 반환 Combination 3
index가 서비스에 사용되고 있을 때 일반적인 방법으로 reindex를 실행하면 오류가 발생한다. 기존 index의 document가 10만개가 넘어가기 때문에 너무 큰 나머지 timeout error가 발생 #news index의 내용을 dict_test index로 reindex POST _reindex { "source": { "index": "news" }, "dest": { "index": "dict_test" } } #오류 코드 {"statusCode":502,"error":"Bad Gateway","message":"Client request timeout"} 이때 API에 옵션을 추가해주면 비동기로 처리가 가능하다. POST _reindex?wait_for_completion=false ..

동의어 사전을 지정해두고 highlight 설정을 하면 검색할 때 highlight가 해당 단어가 아닌 관계없는 바로 뒷 단어에 가서 붙는다. 변경되면 curl -XPOST 'localhost:9200/synonyms_test/_reload_search_analyzers?pretty' 사용해서 reload 가능

Elasticsearch로 검색기능 구현 -4 에서는 각 필드에 알맞은 분석기를 적용해 원하는 형태의 토큰이 나오는 것을 확인했다. mapping과 indexing이 끝났으니 검색을 위한 search template을 구성할 것이다. search template란 검색이 유용하도록 미리 검색 형태를 지정해 두는 기능이다. 미리 query를 정해두고 필요할 때 마다 검색어만 입력하면 검색이 가능하다. search template을 정의하기 위해서는 다음과 같은 형태로 시작하게 된다. test_template 부분이 template의 이름이 된다. 이후로는 일반적인 쿼리와 동일하게 작성해 주게 되는데, 일반적인 쿼리와의 차이점은 검색어의 입력이다. 일반적으로 query를 사용해서 검색할 때는 "field" ..
지난 Elasticsearch로 검색기능 구현 -3 에서는 각 field를 원하는 type으로 mapping 하는 작업까지 완료했다. 이제는 각 field를 검색 조건으로 사용하기 위해 적절한 analyzer를 적용해볼 것이다. 1. 주소 analyze 우선, 원하는 검색의 형태는 다음과 같다. 전체 주소로 검색했을 때 검색이 가능한가? "서울시 봉익동" 으로 검색했을 때 검색이 가능한가 ? "서울시 종로구 봉익동" 으로 검색했을 때 검색이 가능한가 ? "종로구 봉익동" 으로 검색했을 때 검색이 가능한가 ? "봉익동" 으로 검색했을 때 검색이 가능한가 ? "서울 봉익동" 으로 검색했을 때 검색이 가능한가? 위의 검색 경우의 수를 모두 만족시키기 위해 nori analyzer를 활용할 것이다. "addr"..

더보기 1. mapping type 정하기 데이터의 전처리는 끝났고 Ls로도 출력을 해봤으니 Es에 indexing을 할 차례다. indexing 하기 전, index template를 사용하기 위해 미리 field의 mapping을 지정해 줘야 한다. 각 filed를 살펴보면 ["name","site_nm","middle_cate","detail_cate","cate","addr","load_addr","floor","date","timestamp"] 이렇게 구성되어 있다. 먼저 site_nm(지점명) 은 keyword type으로 지정해서 filter context를 사용할 것이다. cate 항목들과 addr(주소), name(상호명)은 text type으로 지정하고, date,timestamp는 d..