English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Elasticsearch 분석

검색 작업 중에 쿼리를 처리할 때, 분석 모듈은 모든 인덱스 내용을 분석합니다. 이 모듈은 분석기, 토큰 생성기, 토큰 필터 및 문자 필터로 구성됩니다. 분석기가 정의되지 않았을 경우, 기본 분석기, 토큰, 필터 및 토큰 생성기가 분석 모듈에 등록됩니다.

다음 예제에서는 기본 분석기를 사용하여 토큰을 생성합니다. 기본 분석기는 다른 분석기를 지정하지 않았을 때 사용됩니다. 그러나 문장에 따라 문법을 분석하여 문장에서 사용된 단어를 생성합니다.

POST _analyze
{
   "analyzer": "standard",
   "text": "오늘의 날씨는 좋습니다"
{}

위의 코드를 실행하면 다음과 같은 응답을 받습니다:

{
   "tokens": [
      {
         "token" : "today's",
         "start_offset": 0,
         "end_offset": : 7,
         "type": "",
         "position": 0
      },
      {
         "token": "weather",
         "start_offset": : 8,
         "end_offset": : 15,
         "type": "",
         "position": : 1
      },
      {
         "token" : "is",
         "start_offset": : 16,
         "end_offset": : 18,
         "type": "",
         "position": : 2
      },
      {
         "token": "beautiful",
         "start_offset": : 19,
         "end_offset": : 28,
         "type": "",
         "position": : 3
      {}
   ]
{}

standard 분석기 구성

우리의 커스터마이즈된 요구사항을 얻기 위해 standard 분석기를 다양한 파라미터로 구성할 수 있습니다.

다음 예제에서는 standard 분석기를 설정하여 max_token_length를5。

이를 위해 먼저 max_length_token 파라미터를 가진 분석기를 사용하여 인덱스를 생성합니다.

PUT index_4_analysis
{
   "settings": {
      "analysis": {
         "analyzer": {
            "my_english_analyzer": {
               "type": "standard",
               "max_token_length": 5,
               "stopwords": "_english_"
            {}
         {}
      {}
   {}
{}

다음과 같은 텍스트를 사용하여 분석기를 적용해 보겠습니다. 주의할 점은 토큰이 어떻게 표시되지 않는지에 있습니다.因为它在开头有两个空格,在结尾有两个空格。对于“ is”이라는 단어는 시작 부분에 공백이 있고, 끝 부분에 공백이 있습니다. 이들을 모두 제거하면4공백이 있는 문자열이 단어가 되는 것은 아닙니다. 최소한 시작 부분이나 끝 부분에 공백이 아닌 문자가 하나는 있어야 합니다. 그렇지 않으면 계산할 단어로 인정됩니다.

POST index_4_analysis/_analyze
{
   "analyzer": "my_english_analyzer",
   "text": "오늘의 날씨는 좋습니다"
{}

위의 코드를 실행하면 다음과 같은 응답을 받습니다:

{
   "tokens": [
      {
         "token": "today"
         "start_offset": 0,
         "end_offset": : 5,
         "type": "",
         "position": 0
      },
      {
         "token": "s",
         "start_offset": : 6,
         "end_offset": : 7,
         "type": "",
         "position": : 1
      },
      {
         "token": "weath",
         "start_offset": : 8,
         "end_offset": : 13,
         "type": "",
         "position": : 2
      },
      {
         "token": "er",
         "start_offset": : 13,
         "end_offset": : 15,
         "type": "",
         "position": : 3
      },
      {
         "token": "beaut",
         "start_offset": : 19,
         "end_offset": : 24,
         "type": "",
         "position": : 5
      },
      {
         "token": "iful",
         "start_offset": : 24,
         "end_offset": : 28,
         "type": "",
         "position": : 6
      {}
   ]
{}

아래 표는 다양한 분석기 목록 및 설명을 나타냅니다-

순번분석기 및 설명
1

표준 분석기(standard)

stopwords와 max_token_length 설정을 통해 이 분석기에 설정할 수 있습니다. 기본적으로 stopwords 목록은 비어 있으며 max_token_length은255。

2

간단 분석기(simple)

이 분석기는 소문자 토큰화기로 구성됩니다.

3

공백 분석기 (whitespace)

이 분석기는 공백 토큰화기로 구성됩니다

4

정지 분석기 (stop)

stopwords와 stopwords_path를 설정할 수 있습니다. 기본적으로 stopwords는 영어 정적 단어로 초기화되며 stopwords_path는 중지 단어가 포함된 텍스트 파일의 경로를 포함합니다

토큰화기

토큰 생성기는 Elasticsearch의 텍스트에서 토큰을 생성하는 데 사용됩니다. 공백이나 기타 구분기호를 고려하여 텍스트를 토큰으로 분해할 수 있습니다. Elasticsearch는 사용자 정의 분석기를 사용할 수 있는 많은 내장 토큰화기가 있습니다.

아래는 토큰화기의 예제입니다. 이 토큰화기는 비문자 문자를 만날 때 텍스트를 여러 단어로 분해하지만 모든 단어를 소문자로 변환합니다. 예를 들어-

POST _analyze
{
   "tokenizer": "lowercase",
   "text": "It Was a Beautiful Weather 5 Days ago."
{}

위의 코드를 실행하면 다음과 같은 응답을 받습니다:

{
   "tokens": [
      {
         "token": "it",
         "start_offset": 0,
         "end_offset": : 2,
         "type": "word",
         "position": 0
      },
      {
         "token": "was",
         "start_offset": : 3,
         "end_offset": : 6,
         "type": "word",
         "position": : 1
      },
      {
         "token": "a",
         "start_offset": : 7,
         "end_offset": : 8,
         "type": "word",
         "position": : 2
      },
      {
         "token": "beautiful",
         "start_offset": : 9,
         "end_offset": : 18,
         "type": "word",
         "position": : 3
      },
      {
         "token": "weather",
         "start_offset": : 19,
         "end_offset": : 26,
         "type": "word",
         "position": : 4
      },
      {
         "token": "days",
         "start_offset": : 29,
         "end_offset": : 33,
         "type": "word",
         "position": : 5
      },
      {
         "token": "ago",
         "start_offset": : 34,
         "end_offset": : 37,
         "type": "word",
         "position": : 6
      {}
   ]
{}

토큰 생성기의 목록 및 설명은 다음 표에 나와 있습니다.

순번토큰화기와 설명
1

표준 표시기 (standard)

이는 문법 기반의 표시기로 구성되어 있으며, max_token_length이 이 표시기에 설정될 수 있습니다.

2

에지 NGram 표시기(edgeNGram)

min_gram, max_gram, token_chars와 같은 설정이 이 표시기에 설정될 수 있습니다.

3

키워드 표시기 (keyword)

이는 입력의 전체를 출력으로 생성합니다. buffer_size는 이를 위해 설정할 수 있습니다.

4

문자 표시기(letter)

이는 문자열의 전체를, 알파벳이 아닌 문자에 도달할 때까지 잡습니다.