mongodb to elasticsearch by using logstash


#1
  1. 최근에 나온 한글 분석기 nori를 사용하기 위해서는 ES 6.4.1이상의 버전을 사용해야 하는건가요?
  • 추가로 nori vs. arirang vs. seunjeon 중 (속도말고) 형태소 분석의 정확성에는 큰 차이가 없을까요?
  1. mongodb에서 elasticsearch로 data를 이전하기 위해, logstash를 사용하려는데 어떤 플러그인을 추가로 설치해야할까요?
  • logstash-input-elasticsearch && logstash-output-elasticsearch를 사용하려 했지만 너무 오래된 버전이라 logstash 6.4.2 version에서는 호환이 안됩니다..
  • rivering도 오래된 버전이고
  • mongo-connector도 마찬가지고요.
  1. 결론적으로!! 한글 분석기 nori를 사용하면서 mongoDB에서 ElasticSearch로 data를 저장하기 위해 사용해야할 프로그램 혹은 플러그인은 무엇일까요?

(Jongmin Kim) #2
  1. 최근에 나온 한글 분석기 nori를 사용하기 위해서는 ES 6.4.1이상의 버전을 사용해야 하는건가요?
  • 추가로 nori vs. arirang vs. seunjeon 중 (속도말고) 형태소 분석의 정확성에는 큰 차이가 없을까요?

6.4.0 부터 지원합니다. 사전은 seunjeon 과 동일한것을 사용하지만 100% 일치한다고 말할 수 없기 때문에 테스트 해 보셔야 하고요.

  1. mongodb에서 elasticsearch로 data를 이전하기 위해, logstash를 사용하려는데 어떤 플러그인을 추가로 설치해야할까요?
  • logstash-input-elasticsearch && logstash-output-elasticsearch를 사용하려 했지만 너무 오래된 버전이라 logstash 6.4.2 version에서는 호환이 안됩니다..
  • rivering도 오래된 버전이고
  • mongo-connector도 마찬가지고요.

MongoDB 에서 바로 가져오는 커넥터가 없으면 중간에 Kafka 등을 중간에 두고 하면 되지 않을까 싶습니다.

  1. 결론적으로!! 한글 분석기 nori를 사용하면서 mongoDB에서 ElasticSearch로 data를 저장하기 위해 사용해야할 프로그램 혹은 플러그인은 무엇일까요?

#3

답변 감사합니다.^^

질문이 더 있는데요.

  1. 웨비나에서 진행한 것처럼 서버에서 쓰는 키바나를 로컬 웹으로도 접근하려면 어떻게 해야되나요?
    예를 들면 서버 아이피가 110.10.20.7이라 했을 때 로컬에서 110.10.20.7:5601로 접근하는건 아닌거 같아서요.

  2. 그래프
    Metric으로 count, 날짜를 x축, 이름을 y축으로 해서 다큐먼트에 이름이 제일 많이 언급된 순서로 5개 혹은 10개(특정개수) 랭킹을 매겨 그래프로 나타내려 하는데

  • size 5라 한다고 5개가 추출되지 않더군요.
  • 김영수란 이름이 인덱스 안에 55개가 있어도 55개 그대로 안나오더군요. 뭔가 비율적으로 감소하는 것 같던데 비율 적용 안할순 없나요

박성권 드림.


(Jongmin Kim) #4
  1. 웨비나에서 진행한 것처럼 서버에서 쓰는 키바나를 로컬 웹으로도 접근하려면 어떻게 해야되나요?
    예를 들면 서버 아이피가 110.10.20.7이라 했을 때 로컬에서 110.10.20.7:5601로 접근하는건 아닌거 같아서요.

kibana.yml 파일에서
server.host: 110.10.20.7
로 설정 하시고 외부에서 접근하는 주소로 접속 해보세요.

  1. 그래프
    Metric으로 count, 날짜를 x축, 이름을 y축으로 해서 다큐먼트에 이름이 제일 많이 언급된 순서로 5개 혹은 10개(특정개수) 랭킹을 매겨 그래프로 나타내려 하는데
  • size 5라 한다고 5개가 추출되지 않더군요.
  • 김영수란 이름이 인덱스 안에 55개가 있어도 55개 그대로 안나오더군요. 뭔가 비율적으로 감소하는 것 같던데 비율 적용 안할순 없나요

기본적으로 사용하는 Similarity 알고리즘은 BM25 입니다. TF 값은 25 이상 부터는 더 이상 TF가 증가되지 않습니다.
다른 Similaryty 를 사용하시려면 아래 도큐먼트를 참고하시고요,
https://www.elastic.co/guide/en/elasticsearch/reference/6.4/index-modules-similarity.html#configuration
또는 constant_score 쿼리를 사용하는것도 가능하지 않을까 싶습니다.
https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-constant-score-query.html
내지는 script를 써서 키워드를 배열로 저장하도록 재색인 해서 쓰는 방법도 있을것 같습니다.


#5

안녕하세요 김종민님^^
항상 친절히 답변해주셔서 감사합니다.

이용 중에 또 질문이 생겼는데요.

  1. 서버에서 키바나 인덱스 생성이 안돼요(무한로딩)

제 랩탑에서 서버에 있는 키바나 이용이 가능한데, 시각화 하려고 키바나 인덱스 패턴 생성을 눌렀더니 무한로딩입니다. 하루 넘게.

서버 사양은 2vCPU, 16GB ram입니다.
다른 와이파이, 다른 랩탑, 재시도 뭐 안해본게 없네요.
다만 제 로컬과 다른 점이라면 서버에 있는 에라스틱에 1.5gb짜리 인덱스가 있다는 건데, 이것도 키바나 생성에 영향을 줄까요?
그리고 1gb 조금 넘는 양이 그렇게 영향을 줄까요?

  1. Stopwords, userko-dic, synonym사전 이용이 개수 제한
    3개 사전을 이용중이고 단어 수가 일정 개수 이상 지나니까 파이썬에서 빌드가 아예 안되서 찾아봤더니 인덱스 메모리 제약이 걸려있다는 말을 들었는데, 어떻게 해결할 수 있을까요?
    단어도 각 50개 정도밖에 안넣었는데ㅠㅠ

좋은 주말 보내십쇼^^

박성권 드림.


#6

Solution

  1. 키바나 인덱스 생성 오류

기존 키바나 인덱스에 어떤 오류가 발생했을 때, 그 문제를 해결하지 않으면
새로운 인덱스 생성이 안되더라고요.
그 문제를 해결하면 생성이 잘 됩니다.ㅎㅎㅎ


(Jongmin Kim) #7

보통은 모든 정보는 .kibana 인덱스에 저장됩니다. 문제가 있으면 저 인덱스에서 해당 인덱스 패턴을 찾아 삭제하고 다시 해 보세요.