반응형

📝인덱스 삭제

DELETE board
# board 인덱스 삭제

 

📝레코드 추가

POST board/_doc/1 
{
  "title" : "한국항공우주산업 너무 재미있어요."
}
# board 인덱스 1번 레코드의 title필드에 값 추가

 

📝인덱스 레코드 조회

GET board/_search
{
  "query": {
    "match": {
      "title": {
        "query": "한국"
      }
    }
  }
}
# board 인덱스에 title 필드에 "한국" 포함되는 조건 조회

 

📝분석기를 이용한 텍스트 형태소 분석 결과 조회

GET board/_analyze
{
  "analyzer": "nori",
  "text": "한국항공우주산업"  
}
# board 인덱스에 nori 분석기를 사용한 형태소 분해 결과 조회 (여기서 nori는 노리형태소분석기)
# 형태소 분해 결과와 일치하는 단어로 검색해야 검색에 노출된다.

GET board/_analyze
{
  "analyzer": "nori",
  "text": "한국항공우주산업",
  "explain": true
}
# explain : nori 분석기를 이용해서 나오는 모든 형태소 분해 결과를 상세히 보여준다 (품사 종류 등...)
# stoptags filter 적용이 안 된 상태로 다 보여준다.

 

📝인덱스 생성

PUT board
{
  "mappings" : {
    "properties" : {
      "category" : {
        "type" : "text"
      },
      "company" : {
        "type" : "text"
      },
      "contents" : {
        "type" : "text",
        "analyzer": "nori"
      },
      "del_yn" : {
        "type" : "text"
      },
      "file_path" : {
        "type" : "text"
      },
      "file_contents" : {
        "type" : "text"
      },
      "id" : {
        "type" : "integer"
      },
      "modi_date" : {
        "type" : "date"
      },
      "reg_date" : {
        "type" : "text"
      },
      "title" : {
        "type" : "text"
      },
      "writer" : {
        "type" : "text"
      }
    }
  },
  "settings" : {
    "index" : {
      "analysis" : {
        "filter" : {
          "nori_posfilter" : {
            "type" : "nori_part_of_speech",
            "stoptags" : [
              "J",
              "SP",
              "VSV",
              "UNKNOWN",
              "UNA",
              "SSO",
              "SSC",
              "SP",
              "SH",
              "SF",
              "SE",
              "SC",
              "NA",
              "E",
              "NNB",
              "XSV",
              "VV",
              "XSA",
              "VA",
              "VX",
              "VCP"
            ]
          }
        },
        "analyzer" : {
          "nori" : {
            "filter" : [
              "nori_posfilter"
            ],
            "tokenizer" : "korean_nori_tokenizer"
          }
        },
        "tokenizer" : {
          "korean_nori_tokenizer" : {
            "type" : "nori_tokenizer",
            "decompound_level" : "mixed",
            "user_dictionary" : "dictionary/newly_coined_word/newly_coined_word_sungjaefileinc.txt"
          }
        }
      }
    }
  }
}

|―mapping

|settings

        |index

        |analysis

                  |filter

                  | analyzer

                  | tokenizer

 

📝매핑

"mappings" : {
"properties" : {
  "category" : {
    "type" : "text"
  },
  "company" : {
    "type" : "text"
  },
  "contents" : {
    "type" : "text",
    "analyzer": "nori"
  },
  "del_yn" : {
    "type" : "text"
  },
  "file_path" : {
    "type" : "text"
  },
  "file_contents" : {
    "type" : "text"
  },
  "id" : {
    "type" : "integer"
  },
  "modi_date" : {
    "type" : "date"
  },
  "reg_date" : {
    "type" : "text"
  },
  "title" : {
    "type" : "text"
  },
  "writer" : {
    "type" : "text"
  }
}

# 키 이름은 category 이고 type은 text (전문)이다.
# ....
# 키 이름은 id 이고 type 은 integer(정수)이다.

 

📝필터

"filter" : {
  "nori_posfilter" : {
    "type" : "nori_part_of_speech",
    "stoptags" : [
      "J",
      "SP",
      "VSV",
      "UNKNOWN",
      "UNA",
      "SSO",
      "SSC",
      "SP",
      "SH",
      "SF",
      "SE",
      "SC",
      "NA",
      "E",
      "NNB",
      "XSV",
      "VV",
      "XSA",
      "VA",
      "VX",
      "VCP"
    ]
  }
}
# nori_posfilter는 filter 이름
# nori_part_of_speech은 nori에서 제공하는 필터로 품사에 대한 제외어(불용어)처리가 가능하다

 

📝분석기

"analyzer" : {
  "nori" : {
    "filter" : [
      "nori_posfilter"
    ],
    "tokenizer" : "korean_nori_tokenizer"
  }
}
# analyzer는 형태소 분석기를 선언한다.
# nori라는 이름이고 filter는 위에 설명한 nori_posfilter를 이용한다.
# tokenizer로는 korean_nori_tokenizer 이름의 분석기를 사용한다 (여기에선 노리형태소분석기)

 

📝형태소 분석기

"tokenizer" : {
  "korean_nori_tokenizer" : {
    "type" : "nori_tokenizer",
    "decompound_level" : "mixed",
    "user_dictionary" : "dictionary/newly_coined_word/newly_coined_word_sungjaefileinc.txt"
  }
}
# tokenizer는 형태소 분석기를 의미하며 korean_nori_toknenizer라는 이름이다.
# nori_tokenizer는 노리 형태소 분석기를 의미한다.
# decompound_level은 형태소 분해 방법이다.
# user_dictionary는 사용자 사전이다. (신조어 사전)

 

 

반응형