목록전체 글 (41)
엔지니어 블로그
동의어 사전을 지정해두고 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. 소프트웨어 개발 방법론 소프트웨어 개발 전과정에 지속적으로 적용 가능한 방법 철차 구조적 방법론 => 전체 시스템을 기능에 따라 분리 개발하고 통합하는 분할과..
서울시 상가 정보 데이터로 검색 기능을 구현하는 프로젝트를 진행한다. 1.데이터 전처리 우선 빅데이터 포털에서 csv로 된 raw data를 다운받아 columns를 확인해 봤다. pandas를 사용해서 30개가 넘는 columns 중 필요한 것만 남기고 모조리 삭제했다. logstash로 필터링해서 가져오고 싶었지만 data의 크기가 너무 커서 부담스러운 작업이었기 때문이다. 이렇게 필요한 columns만 남긴 후 내부의 data들을 살펴봤다. 눈에 띄는 것은 지점 명과 층 정보에 보이는 null값이었다. null값은 Es에서 mapping 하면서 해결할 수 있을 것 같아 시도해 보았다. #default_value 값을 설정해서 해결 시도 floor : { "type" : "integer", "null..
m1 환경에서 logstash를 사용하려고 하는데 오류가 발생했다. 온갖 검색을 다 해봐도 해결할 수 없었다... 지푸라기라도 잡는 심정으로 ELK 커뮤니티에 문의해봤고 한분이 답을 주셨다. 은인이다. 컴퓨터에 설치된 jdk가 아니라 logstash의 bundled jdk를 사용해야 한다고 하셨다. 그래서 미리 설정해둔 $JAVA_HOME 환경 변수를 unset 해준 후 실행시켜 보았더니 거짓말처럼 실행됐다. 교훈. m1의 jdk는 호환성이 좋지 못하다,,,