hanseom 2025. 3. 11. 01:00
반응형

  Elasticsearch Analysis는 텍스트 데이터를 처리하고, 색인할 수 있도록 변환하는 과정입니다. 이는 텍스트 데이터를 토큰화하고, 필터링하여 검색에 적합한 형태로 만드는 역할을 합니다.

 

Key components of Analyzers

  • Character Filters: 텍스트를 토큰화하기 전에 문자 단위로 처리하는 역할을 합니다.
    e.g HTML Stripping, Mapping and Pattern Replacement
  • Tokenizer: 텍스트를 개별 단어 또는 토큰으로 나누는 역할을 합니다.
    e.g Standard Tokenizer, Whitespace Tokenizer, Keyword Tokenizer
  • Token Filters: 생성된 토큰을 추가로 처리하는 역할을 합니다.
    e.g Lowercase Token Filter, Stop Token Filter, Stemmer Token Filter

 

standard analyzer

POST /_analyze
{
  "text": "<p>Elasticsearch is a powerful tool for querying and analyzing data  ...!!</p>",
  "analyzer": "standard"
}

POST /_analyze
{
  "text": "<p>Elasticsearch is a powerful tool for querying and analyzing data  ...!!</p>",
  "char_filter": ["html_strip"],
  "tokenizer": "standard",
  "filter": ["lowercase"]
}

 

Character Filter

  • Mapping character filter
GET /_analyze
{
  "tokenizer": "keyword",
  "char_filter": [
    {
      "type": "mapping",
      "mappings": [
        "٠ => 0",
        "١ => 1",
        "٢ => 2",
        "٣ => 3",
        "٤ => 4",
        "٥ => 5",
        "٦ => 6",
        "٧ => 7",
        "٨ => 8",
        "٩ => 9"
      ]
    }
  ],
  "text": "My license plate is ٢٥٠١٥"
}
  • Customize and add to an analyzer
PUT /my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "standard",
          "char_filter": [
            "my_mappings_char_filter"
          ]
        }
      },
      "char_filter": {
        "my_mappings_char_filter": {
          "type": "mapping",
          "mappings": [
            ":) => _happy_",
            ":( => _sad_"
          ]
        }
      }
    }
  }
}

GET /my-index-000001/_analyze
{
  "tokenizer": "keyword",
  "char_filter": [ "my_mappings_char_filter" ],
  "text": "I'm delighted about it :("
}

 

[참고자료]

반응형