모듈을 사용하는 방법에 대해 질문이 있습니다.

elastic cloud를 사용중이며, 완전 기초단계에서부터 시작하는 중입니다..


뉴스사이트를 크롤링해서 목표로 하고 있는 뉴스기사에 대한 json 파일을 얻었고, 이걸 분석기를 통해서 단어 형태로 짜른 다음에, 각 요소들간 연관성을 이어서


이런 형태로 나타내고 싶습니다...만..

현재 어떻게 elastic cloud에서 가져온 모듈을 사용해야 하는지 조차 감이 안잡히는 상황입니다..

조언 한마디라도 부탁드립니다 도움이 많이 될것같네요 ㅠㅠ

글에서 설명한 출력을 나오게 하는 방법.. 개인적으로 알려주실분 카톡 opeaa844 로 연락 부탁드립니다 .. 소정의 감사비를 드리겠습니다. ㅠㅠ 그만큼 배울 곳이 없고 막막하네요

Please don't ask users to contact you outside the topic with a solution. Doing that removes valuable knowledge for others.

안녕하세요. 우선 위 데이터들이 클라우드에 있는 elasticsearch 안에 색인이 되어야 하는데요, json 파일이 저장되어 있는 동일한 머신에서 filebeat 으로 데이터를 긁어오거나, API로 제공이 된다면 logstash로 가져올 수 있습니다.

올려주신 링크에 있는 json 파일은 형식이 좀 잘못되어 있네요. 첫 줄에 { 는 빠져 있어야 하고, elasticsearch로 가져오기 위해서는 각 도큐먼트는 1열에 있어야 합니다. 그리고 도큐먼트별로 , 구분자가 있는걸 보니 원 문서는 혹시

{
  "data":[
 {"link":"https://www.fastcompany.com/90205905/bitcoins-price-spiked-this-week-and-this-time-it-didnt-immediately-crash",
"pDate":"{'datetime': '2018-07-20T17:50:20Z'}",
"title":"Bitcoin’s price spiked this week, and this time it didn’t immediately crash",
"description": "Earlier this week, ... how long it lasts."},   
{"link":"https://www.fastcompany.com/90205247/dont-count-russia-out-experts-warn-on-election-hacking-amid-relative-calm",
"pDate":"{'datetime': '2018-07-19T20:00:50Z'}",
"title":"“Don’t count Russia out,” experts warn on election hacking amid relative calm",
"description": "As the 2018... "},
...
  ]
}

이런 형태였을 것으로 예상이 됩니다.
이 경우에는 logstash 또는 ingest pipeline 의 split 필터를 이용해서 데이터를 분리해낼 수 있습니다. 그렇기 위해서는 저 파일의 전체 데이터가 1줄로 되어 있어야 합니다.

일단 입력하시면 필드는 자동으로 만들어지겠지만

  • link,
  • pDate.datetime
  • title
  • description

4개의 필드가 나오겠네요. 그래프 분석을 하고 싶은 필드가 어떤 필드인지를 보시고 그 필드는 매핑을 설정하실때
fileddata:true
설정을 추가해야 합니다. 메모리 소모가 많아 별로 권장되지는 않는 설정이지만 오상윤님이 목적하시는 기능에는 필요하실 것 같고요.
제가 볼때 content 필드는 내용이 많아 위험이 좀 있어 보이고 title 필드 정도는 가능할 것 같습니다. 가장 좋은 것은 데이터 색인 전에 미리 분석할 토큰들을 별도로 keyword 타입으로 넣는 것인데, 그건 또 새로 프로그램을 짜야 해서 공수가 들어갈 것 같습니다.

logstash 필터, ingest pipeline 은 답글로 설명 드리긴 내용이 방대해서,
https://www.elastic.co/kr/webinars/getting-started-logstash
여기 있는 내용을 우선 한번 보시고 숙지 하시길 권장드립니다.

ps.
맨 위에 설정된 형식으로 데이터를 가져온다고 가정하고 logstash 설정 파일 알려드리겠습니다.
입력으로 http_poller 를 쓰면 로그스태시를 크롤러 처럼 사용할 수 있습니다.
파일을 직접 읽으실꺼면 file 또는 beats 를 사용하시면 됩니다.

input {
  http_poller {
    urls => {
      news => "http://블라블라뉴스.com/무슨무슨API"
    }
    request_timeout => 60
    schedule => { 
      every => "10m"
    }
}

filter {
  split {
    field => "data"
  }

  date {
    match => [ "[data][pDate][datetime]", "yyyy-MM-dd'T'HH:mm:ssZ"]
  }
}

output {
  elasticsearch {
    hosts => ["<elastic_cloud가 있는 호스트의>:<elasticsearch http 포트>"]
    user => "<사용자>"
    password => "<암호>"
    index => "<인덱스명>"
    document_type => "_doc"
  }
}

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.