Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 버전관리
- Overloading
- 상속
- 형상관리
- Elasticsearch
- 오버로딩
- 오버라이딩
- elastic certified engineer
- overriding
- git
- dlfks
- java
Archives
- Today
- Total
엔지니어 블로그
Elasticsearch로 검색기능 구현 -1 본문
서울시 상가 정보 데이터로 검색 기능을 구현하는 프로젝트를 진행한다.
1.데이터 전처리
우선 빅데이터 포털에서 csv로 된 raw data를 다운받아 columns를 확인해 봤다.
pandas를 사용해서 30개가 넘는 columns 중 필요한 것만 남기고 모조리 삭제했다.
logstash로 필터링해서 가져오고 싶었지만 data의 크기가 너무 커서 부담스러운 작업이었기 때문이다.
이렇게 필요한 columns만 남긴 후 내부의 data들을 살펴봤다.
눈에 띄는 것은 지점 명과 층 정보에 보이는 null값이었다.
null값은 Es에서 mapping 하면서 해결할 수 있을 것 같아 시도해 보았다.
#default_value 값을 설정해서 해결 시도
floor : {
"type" : "integer",
"null_value" : "1"
}
null 값이 들어왔을 때 기본 값으로 1을 설정해 준 것이다.
하지만 이렇게 했을 때 1로 검색하면 층 정보가 null인 data가 검색되는 것은 맞지만, 원본 데이터가 변경되는 것은 아니었다. 층 정보가 검색 조건으로만 사용되었다면 문제가 되지 않지만, 결과 값으로 사용될 data 였기에 null 값 그대로 출력하는 것은 문제가 되었다.
지점 명 역시 마찬가지였고, 각각 기본 값으로 "미상","1" 을 설정해 주기로 했다.
지점은 프렌차이즈임에도 표기가 안된 부분이 있었고, 층은 확인할 길이 없기 때문에 각각 임의로 설정한 것이다.
그리고 층 이름은 "-1","1F" 등과 같이 단위가 상이해서 다음과 같은 방식으로 모든 층 단위를 통일했다.
df["층정보"] = df['층정보'].str.replace("-2","지하2")
...
df["층정보"] = df["층정보"].astype('str') + '층'
다음과 같은 형태의 dataframe이 완성됐다.
'개인 프로젝트 > Elk 검색기능 구현 프로젝트' 카테고리의 다른 글
Elasticsearch로 검색기능 구현 -5 (0) | 2022.04.07 |
---|---|
Elasticsearch로 검색기능 구현 -4 (0) | 2022.04.04 |
Elasticsearch로 검색기능 구현 -3 (0) | 2022.04.01 |
Elasticsearch로 검색기능 구현 -2 (0) | 2022.03.31 |