기존 IP 필드로 GEOIP 추가 하기(ingest-geoip 라이브러리 리인덱싱) 본문
순수한 Ip 타입 필드는 ES에서 제공하는 다양한 Geo 쿼리를 사용할 수 없습니다.
기존에 수집한 Ip 타입 필드 데이터들을 Geo 쿼리에 활용하고 싶을때에는 매핑을 추가하여 리인덱싱을 진행하면 되는데요,
이번 포스트에서는 로그스태시의 geoip 필터를 사용하지 않고, ingest-geoip 플러그인을 활용하는 방법을 알아보겠습니다.
1. ingest-geoip 플러그인 설치
다음 명령어를 통해 ingest-geoip 플러그인 설치합니다.(리눅스 기준. 사용하시는 환경에 맞게 ingest-geoip 플러그인을 설치하시면 됩니다.)
sudo bin/elasticsearch-plugin install ingest-geoip
플러그인이 설치되면 ElasticSearch 리스타트 해 줍니다.
2. ingest-geoip 파이프라인 생성
ElasticSearch를 리스타트 한 후 파이프라인을 생성합니다.
PUT _ingest/pipeline/geoip
{ "description" : "Add geoip info", "processors" : [ { "geoip" : { "field" : "requestIpv4", "ignore_missing" : true } } ] }
requestIpv4 필드에는 기존 인덱스에서 ip로 매핑되어있는 필드명을 입력해주면 됩니다.
3. 새 인덱스 생성
기존 인덱스에서 geoip 필드를 추가하여 새로운 인덱스를 만들어 줍니다.
. . . "geoip": { "dynamic": true, "properties": { "location": { "type": "geo_point" } } }, . . .
4. 리인덱싱
파이프라인과 새 인덱스가 생성되었다면, 리인덱싱 작업을 진행합니다.
POST _reindex { "source": { "index": "foo" }, "dest": { "index": "foo-geo", "pipeline": "geoip" } }
dest의 파이프라인은 위에서 생성한 파이프라인 이름을 적어주면 됩니다.
(데이터 양이 많아 타임아웃이 뜨는 경우에는 POST _reindex?wait_for_completion=false 옵션으로 비동기로 호출해 주면 됩니다.)
출처 : https://discuss.elastic.co/t/add-geoip-on-existing-index/93949/3
'Elastic Stack' 카테고리의 다른 글
mecab-ko-dic 커스텀 단어 추가 및 우선순위 높이기 (0) | 2019.07.26 |
---|