ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Elastic Stack 개념, ElasticSearch Dev Tools 문법 정리
    PROGRAMMING 2021. 6. 1. 14:27
    반응형

    Elastic Stack의 Structure

    Elastic Stack이란?

    Elastic Stack은 어떤 하나의 통합된 솔루션이 아니라 4개의 product로 구성되어 있는 하나의 stack 이다.
    기존에는 ElasticSearch + Logstash + Kibana를 ELK라는 서비스명으로 제공하였으나, 5.0.0버전부터 Beats가 추가되어 Elastic Stack이라는 이름으로 변경되었다고 한다.

    ElasticSearch란?

    Apache Lucene 기반의 Java 오픈소스 분산 검색 엔진.
    많은 기업에서 이 검색 엔진을 customizing하여 사용하고 있다.


    ElasticSearch Dev Tools

    사용해 보기

    Kibana에 접속하여 왼쪽 navigation bar의 Management > Dev Tools를 선택하여 접속할 수 있다.

    Dev Tools 에서는 DSL (Domain Specific Language) query를 날릴 수 있다.
    참고: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html

    왠지 RESTful과 GraphQL 문법의 중간 쯤에 있는 문법의 느낌인데, 특정 사이트의 크롤링 결과를 저장한 ES index 내에서 가장 최신 data를 조회하는 query 예시이다.

    GET crawling_hsad/_search
    {
       "size": 1,
       "sort": { "created": "desc"},
       "query": {
          "match_all": {}
       }
    }

    Query DSL Basic

     

    자주 쓰는 문구들

    // _id를 가진 document 삭제
    DELETE <index_name>/_doc/<_id>
    
    // 가장 최근에 저장한 document datetime 받아오기
    GET <index_name>/_search
    {
      "size": 0,
      "aggs": {
        "properties": {
          "max": {
            "field": "created"
          }
        }
      }
    }
    // 해당 URL을 가진 document가 있는지 검색
    GET <index_name>/_search
    {
      "query": {
        "bool": { "filter": [{ "bool": { "should": [{ "match_phrase": { "url.keyword": "http://www.aitimes.com/news/articleView.html?idxno=1111" } }] } }] }
      }
    }
    
    // 여러 개의 질의문을 사용할 때
    GET <index_name>/_search?
    {
      "query": {
        "bool": { "filter": [{ "bool": { "should": [{ "terms": { "topic_num": [0, 1] } }] } }] }
      }
    }
    
    // 그 외 여러 field에 같은 질의문을 사용할 때
    GET <index_name>/_search?
    {
      "query": {
        "bool": { "filter": [{ "bool": { "should": [{ "multi_match": { "fields": ["name", "category"], "query": "emily" } }] } }] }
      }
    }
    
    ---
    // 값이 존재하는 경우 return example (total.value = 1)
    {
      "took" : 2,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 1,
          "relation" : "eq"
        },
        "max_score" : 0.0,
        "hits" : [
          {
            "_index" : "crawling_aitimes",
            "_type" : "_doc",
            "_id" : "crawling_aitimes_138956",
            "_score" : 0.0,
            "_source" : {
              "title" : "인공지능(AI)으로 고고학 ‘신세계’ 열릴까",
              "url" : "http://www.aitimes.com/news/articleView.html?idxno=138956",
              "type" : "AI중심도시 광주 - 기획특집",
              "writer" : "윤영주 기자",
              "created" : "2021-06-20T16:34:00",
              "content" : """박진호 문화재디지털복원가와 조용진 미술해부학 박사가 지난 2012년 디지털 기술을 이용해 충남 부여 능안골이라는 지역에서 발견된 AD 6세기경 백제 귀족부인의 파편화된 두개골을 모아 백제 여인의 얼굴을 복원하는 작업에 나섰다. 디지털 복원된 백제 여인을온라인 가계도 플랫폼인 마이헤리티지(MyHeritage)의 인공지능(AI) 서비스로 구현한 모습. (사진=박진호 문화재디지털복원가, MyHeritage).
    
    
    
    
    # 영산강 유역과 무등산 자락에서 살던 우리의 옛 조상들. 전라도 땅의 역사와 전라도 정신의 뿌리는 어디에서부터 시작됐을까. 최근 전라도의 정체성을 확립하는 과정에서‘마한’이라는 국가(혹은 지역 공동체)에 대한관심이 모아지고 있다.
    특히 지난 4월 나주 정촌고분 출토 금동신발 보물 지정을 계기로 그동안 베일에 쌓여있던 ‘마한’의 문화‧역사에 대한 연구가 본격화되고 있다. 전라도 지역 곳곳에 잠들어 있는 고분군의 존재는 이 궁금증을 해결해줄 실마리가 된다.
    여전히 발견되지 않은 채 감춰진유적지의 위치를 비정(比定)하고찾아내는 데인공지능(AI)의 도움을 받는다면 어떨까. 고고학과 첨단기술인 AI의 만남이 아직 밝혀지지 않은 잃어버린 시간을 찾아역사적인 비밀을 한층 더수월하게 풀어가는열쇠가 될 수 있을까.
    
    
    
    ​지난 2014년 발굴된 ‘나주 정촌고분 출토 금동신발(羅州 丁村古墳 出土 金銅飾履)’의 출토 당시 모습. (사진=문화재청 제공).
    
    
    인공지능(AI) 기술이 나날이정교해짐에 따라, AI가유물‧유적지의 위치를 탐색하는 것은 물론 유물 파편을 분석‧분류하고 고대문자를 판독하는 등 고고학자들의 수고를 덜어주며성과를 내고 있다. 과연 AI로 고고학의 ‘신세계’가 열릴 수 있을까.
    지난 4월 삼국시대에 만들어진‘나주 정촌고분 출토 금동신발(羅州 丁村古墳 出土 金銅飾履)’이 국가 보물이 됐다. 그동안 삼국시대 고분 출토 유물들 가운데 귀걸이나 목걸이, 팔찌 등이 국보‧보물로 지정된 사례는 꽤 많았지만, ‘금동신발’이 국가지정 문화재가 된 것은 이번이 처음이다.
    .
    .
    .
    
    
    // 값이 존재하지 않는 경우 return example (total.value = 0)
    {
      "took" : 1,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 0,
          "relation" : "eq"
        },
        "max_score" : null,
        "hits" : [ ]
      }
    }

    References

    https://gruuuuu.github.io/elk-starter/elk-starter00/

     

    00.Introduction of Elastic Stack

    1. Overview 이번 시리즈에서는 Elastic Stack라고 불리는 로그 및 데이터 분석도구에 대한 내용을 다루려고 합니다. 데이터를 저장하고 분석하는 역할을하는 Elasticsearch부터, 로그를 수집하고 전송하

    gruuuuu.github.io

     

    반응형

    댓글

Written by Emily.