목록분류 전체보기 (83)
엔지니어 블로그
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..

지난 과정에서는 전처리를 해서 원하는 형태의 csv를 만들었다. 이번에는 완성된 data를 Ls를 통해 출력해 봤다. input { file { path => "C:/logstash-7.10.1/config/seoul_data/seoul4.csv" start_position => "beginning" sincedb_path => "nul" } } filter { csv{ separator => "," skip_header => true columns => ["name","site_nm","middle_cate","detail_cate","cate","addr","load_addr","floor","date"] } #1 dissect{ mapping => {"addr" => "%{state} %{city}..
1. 소프트웨어 생명주기 시스템의 요구사항 분석부터 유지 보수까지의 전과정을 체계화한 철차를 뜻한다. 요구분석 - 설계 - 구현 - 테스트 - 유지보수 총 5단계로 진행된다. 1-1. 소프트웨어 생명주기의 종류 폭포수 => 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어가는 모델이다. 프로토타이핑 => 프로토타입을 제작하여 고객의 피드백을 받고 반영하여 소프트웨어를 만드는 모델이다. 나선형 => 계획-위험분석-개발-고객평가 4단계가 반복적으로 시행되는 모델이다. 반복적 모델 => 구축 대상을 병렬 개발 후 통합하여 완성시키는 모델이다. 1-2. 소프트웨어 개발 방법론 소프트웨어 개발 전과정에 지속적으로 적용 가능한 방법 철차 구조적 방법론 => 전체 시스템을 기능에 따라 분리 개발하고 통합하는 분할과..