엘라스틱서치 필드값으로 집계하기 ElasticSearch Aggregation Query (group by)

ElasticSearch는 RDMS가 아닙니다. DB가 아닙니다.

넓은 의미로는 데이터베이스라고 할 수는 있습니다. 데이터를 넣고 분석하고 삭제하는 등의 관리를 할 수 있으니까요. 하지만 RDBMS가 가진 많은 기능을 제공하지는 않고 그 중에 어낼리틱스 기능또한 제공되지 않는 것 중 하나입니다.

하지만 DB처럼 사용하려는 사용자 요구가 많고 엘라스틱서치 측에서도 계속해서 그런 어낼리틱스 기능을 지원하려고 하고 있습니다.

집계 쿼리(Aggregation Query)는 DB의 “group by”같은 것을 말합니다.

집계 쿼리를 사용할 때 주의할 것

  • 엘라스틱서치의 집계 쿼리는 부하가 심합니다.
  • 집계하려는 필드가 색인에 들어있지 않은 경우는 더 심합니다.

쓰고 싶으믄 크지 않은 인덱스에 대해서 하고 가능하면 대상 필드에 색인을 걸어 두는 것이 좋습니다.

쿼리 예제

aggregation 쿼리의 예제입니다. “createDate”라는 날짜 포맷의 컬럼을 기준으로 몇개의 문서가 있는지 집계하는 쿼리입니다. range는 날짜 구간입니다. 아래와 같은 형식으로 쿼리를 작성해서 응용해서 쓰면 됩니다.

위와 같이 하면 집계 결과와 검색결과가 같이 나오는데 검색결과에 모든 필드가 포함됩니다. 필요 없는 것을 빼고 비교적 간략하게 받으려면 _source를 지정해주면 조금 더 낫습니다.

아예 hits에 결과를 안넣고 받으려면 size를 0으로 해주면 됩니다.

tcpdump로 UDP 데이터가 어느 호스트에서 오는지 확인하는 법

제목 그대로입니다.

UDP는 TCP와 달리 커넥션(connection)을 맞는 방식이 아니기 때문에 바로 지금 데이터를 보내는 호스트들이 어떤 것인지 확인하기가 힘듭니다.

역시 tcpdump로 확인할 수 있습니다. 예를 들면 8125포트로 UDP데이터를 보내고 있는 호스트를 알아내려면 다음과 같은 코맨드를 실행하고 잠시 지켜보면 됩니다.

참고로 8125는 statsd가 데이터를 수신하는 포트이고 statsd는 시스템이나 애플리케이션의 상태를 모니터링하기 위해서 시그널 데이터를 받는 조그만 시스템입니다.

Failure –
java.io.IOException: Downloaded file /var/lib/jenkins/plugins/workflow-support.jpi.tmp does not match expected SHA-1

젠킨스 플러그인 업데이트 도중에 다음과 같이 에러가 발생할 때 해결하는 방법이다.

플러그인 업데이트 주소를 아래와 같이 지정해준다.

The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY xxxxxxxxxxxxxxxx

우분투에서 apt로 레파지토리를 등록하고 설치를 할 때 이런 에러가 발생할 때가 있다.

특히 Jenkins

키 등록을 못한 것이라서 아래의 명령으로 된다. 아래의 키는 예시이므로 키는 자신의 것의로 바꾼다.

만약 서버가 외부 네트워크로 나갈 때 proxy를 사용해야만 한다면 위의 명령으로는 키가 등록되지 않는다. 다음과 같이 proxy를 지정해준다.

이제 설치하려던 패키지를 설치하면 된다.

파이썬 한글 자모 분리 패키지

한글 자모분리를 하는 것은 오타처리, 스팸 감지, 욕설, 성적 표현을 주는 키워드 감지 같은 것을 하기 위해서 사용합니다. 몇 번 해보면 재밌지만 자모분리는 정작 뭐 좀 해보려고 하면 쓸데가 별로 없습니다.

Python에서 사용할 수 있는 한글자모분리 패키지 또는 코드 모음입니다.

파이썬 한글 자모분리 패키지 목록

– 한글툴킷: https://github.com/bluedisk/hangul-toolkit

– 한글유틸: https://github.com/kaniblu/hangul-utils

– 한글파이: https://github.com/rhobot/Hangulpy

– 파이썬 자모: https://github.com/JDongian/python-jamo

– 한글 자음/모음 분해 (코드): https://frhyme.github.io/python/python_korean_englished/

– 한글 유니코드 자모분리: https://nunucompany.tistory.com/28

대부분 주요 기능들은 모두 제공하고 있고 사용법도 쉽고 작동도 잘 됩니다.

원하는 것을 선택해서 쓰면 됩니다.

우분투에 Mecab 형태소분석기 설치 – Install Mecab in Ubuntu

우분투Mecab(은전한닢) 형태소 분석기를 설치하는 방법입니다.

Mecab 메카브 간략 설명

Mecab를 간단히 설명하면

  • Mecab은 C++로 만든 일본어 형태소분석기입니다.
  • Mecab-ko는 Mecab를 고쳐서 만든 한국어형태소분기이며 “은전한닢”라고 부릅니다.

예전 포스트가 있니 참고하세요.

MeCab 형태소 분석기, 형태소분석기란 무엇인가? 워드세그멘터와 형태소분석기

설치방법

Mecab-Ko는 Mecab 코어 모듈과 Mecab-ko-dic을 먼저 설치해야 하는데 번거롭습니다.

konlpy에 있는 간략 스크립트를 쓰면 쉽게 설치가능합니다.

Mecab만으로는 형태소분석을 테스트하거나 활용하기 어려우니 Python 모듈도 설치해줍니다.

파이썬을 실행해서 테스트 해봅니다.

E: Unmet dependencies. Try ‘apt-get -f install’ with no packages (or specify a solution).

우분투에서 패키지를 설치하다가 의존성이 깨지거나 하게 되면 그 뒤로 apt를 실행할 때 마다 에러가 발생합니다. 여간해서는 해결이 잘 안되는데요.

이렇게 하면 됩니다.

출처: https://askubuntu.com/questions/1044817/failed-installation-of-package-breaks-apt-get

[Jenkins] Could not initialize class org.eclipse.jgit.internal.storage.file.FileSnapshot

젠킨스로 git repository를 polling해서 코드가 푸시되었는지 확인한 후에 자동 빌드하는 프로세스를 만들면 로그에 이런 에러가 나면서 실패하는 경우가 있습니다.

젠킨스의 jgit 관련 클래스가 잘못된 것인데 이건 해결방법이 마땅치 않습니다.

그냥 Jenkins를 LTS가 아닌 최신버전이나 다른 버전으로 바꿔서 설치해야 합니다.

jenkins install Certificate verification failed: The certificate is NOT trusted. The certificate chain uses expired certificate. Could not handshake: Error in the certificate verification.

젠킨스를 설치하는데 지런 에러가 날 수 있습니다.

에러는 이렇습니다.

certification을 재설치해줘야 해결이 됩니다.

우분투에서 R 설치하기

2022년 최신판입니다.

늘 똑같은데 최근에 설치하는 방법이 좀 바뀌었군요.

우분투 리눅스에 R을 설치하는 법은 거의 바뀌지 않기 때문에 https://cloud.r-project.org/ 에 방문해서 코드를 복사한 후에 같은 방법을 쓰면 늘 되지만 가끔 방식이 바뀌므로 방문해서 바뀐 것을 확인해봐야 합니다.

빠른 설치 방법

설명을 생략한 코드 복붙이 필요하면 아래의 순서대로 하시면 됩니다.

한줄씩 따라가며 설치하기

복붙만 하다가는 바보가 됩니다. 어떤 순서로 설치하는지 알아둘 필요가 있습니다. 그래야 설치하다 문제가 생기면 어느 부분이 문제인지 알고 처리하는 법을 배울 수 있습니다.

시간이 없고 하기도 싫으면 굳이 지금 할 필요는 없습니다.

# 패키지 인덱스를 업데이트합니다.

# 헬퍼 패키지 2개를 설치합니다.

# 레파지토리 키를 설치합니다.

#  R 4.0 레파지토리를 등록합니다.

# 설치합니다.

# 버전을 확인합니다.

현재 시점에서는 R 4.1.3이 최신 버전이고 곧 새버전이 출시된답니다.

관련 포스트

우분투 18.04에 R 설치하기 – Install R on Ubuntu 18.04