ddolsoon-toy-project / elasticsearch-client

ElasticSearchClient (ESClient)
0 stars 0 forks source link

elasticsearch 한글 자소 분석기 플러그인 설치 #7

Open ddolsoon opened 3 years ago

ddolsoon commented 3 years ago
bin/elasticsearch-plugin install https://github.com/ddolsoon/elasticsearch-jaso-analyzer/releases/download/v7.8.0/jaso-analyzer-plugin-7.8.0-plugin.zip

7.8.0 플러그인이 master 브랜치에 있는것으로 보아서, 7.8.0 release만 안된 느낌 => fork 떠서, release 빌드후 플러그인 설치함.

ddolsoon commented 3 years ago
DELETE /jaso

# Korean Jaso Analyer 설정 및 인덱스 생성 (기본 자소검색용)
PUT /jaso
{
  "settings": {
    "index": {
      "analysis": {
        "filter": {
          "suggest_filter": {
            "type": "edge_ngram",
            "min_gram": 1,
            "max_gram": 50
          }
        },
        "analyzer": {
          "suggest_search_analyzer": {
            "type": "custom",
            "tokenizer": "jaso_tokenizer"
          },
          "suggest_index_analyzer": {
            "type": "custom",
            "tokenizer": "jaso_tokenizer",
            "filter": [
              "suggest_filter"
            ]
          }
        }
      }
    }
  }
}
# Korean Jaso Analyer 설정 및 인덱스 생성 (한,영오타 및 초성토큰 추출이 필요할 때..)
PUT /jaso
{
  "settings": {
    "index": {
      "analysis": {
        "filter": {
          "suggest_filter": {
            "type": "edge_ngram",
            "min_gram": 1,
            "max_gram": 50
          }
        },
        "tokenizer": {
          "jaso_search_tokenizer": {
            "type": "jaso_tokenizer",
            "mistype": true,
            "chosung": false
          },
          "jaso_index_tokenizer": {
            "type": "jaso_tokenizer",
            "mistype": true,
            "chosung": true
          }
        },
        "analyzer": {
          "suggest_search_analyzer": {
            "type": "custom",
            "tokenizer": "jaso_search_tokenizer"
          },
          "suggest_index_analyzer": {
            "type": "custom",
            "tokenizer": "jaso_index_tokenizer",
            "filter": [
              "suggest_filter"
            ]
          }
        }
      }
    }
  }
}

# 인덱스 맵핑
PUT /jaso/_mapping
{
  "properties": {
    "name": {
      "type": "text",
      "store": true,
      "analyzer": "suggest_index_analyzer",
      "search_analyzer": "suggest_search_analyzer"
    }
  }
}

# 문서 생성
POST /jaso/_doc/1
{
  "name":"최일규 Hello"
}

POST /jaso/_doc/2
{
  "name":"초아"
}

# 문서 검색
GET /jaso/_search?pretty=true
{
  "query" : {
        "match" : { "name" : "초" }
    }
}

GET /jaso/_search?pretty=true
{
  "query" : {
        "match" : { "name" : "최일" }
    }
}

GET /jaso/_search?pretty=true
{
  "query" : {
        "match" : { "name" : "ㅊㅇㄱ" }
    }
}

GET /jaso/_search?pretty=true
{
  "query" : {
        "match" : { "name" : "최일" }
    }
}