관리 메뉴

솜씨좋은장씨

[Elasticsearch] "failed to find global tokenizer under [nori_tokenizer]" 본문

Programming/Elasticsearch

[Elasticsearch] "failed to find global tokenizer under [nori_tokenizer]"

솜씨좋은장씨 2020. 4. 29. 11:30
728x90
반응형

aws ec2 서버에서 nori를 사용하기위해 설치하고

Kibana에서 제대로 설치가 되었는지 확인해보기위해

GET _analyze
{
  "tokenizer": "nori_tokenizer",
  "text": [
    "동해물과 백두산이"
  ]
}

위의 query를 실행하였을때

{
  "error" : {
    "root_cause" : [
      {
        "type" : "illegal_argument_exception",
        "reason" : "failed to find global tokenizer under [nori_tokenizer]"
      }
    ],
    "type" : "illegal_argument_exception",
    "reason" : "failed to find global tokenizer under [nori_tokenizer]"
  },
  "status" : 400
}

위처럼 에러 내용이 출력되는 경우 해결방법에 대해서 적어보았습니다.

 

원인

아직 설치한 nori가 현재 백그라운드에서 실행되고 있는 elasticsearch에 반영되어있지 않기 때문

 

해결 방법

Elasticsearch를 재실행해주면 됩니다.

 

방법은 다음과 같습니다.

 ps -ef | grep elastic 

먼저 터미널에서 실행되고 있는 elasticsearch의 PID(프로세스 ID)를 찾기위해 위의 명령어를 입력합니다.

ec2-user   961 32661  0 02:22 pts/2    00:00:00 grep --color=auto elastic
ec2-user  4365     1  0 Apr16 ?        01:17:36 /home/ec2-user/elasticsearch-7.6
ec2-user  4458  4365  0 Apr16 ?        00:00:00 /home/ec2-user/elasticsearch-7.6   

그럼 위와 같이 나오는데 여기서 해당하는 항목의 ec2-user 뒤에 나오는 번호가 PID 입니다.

kill 4365

kill 명령어를 사용하여 실행을 중단 합니다.

 

그럼 기존에 실행되고 있던 Elasticsearch가 종료됩니다.

 

그런 다음 아래의 명령어를 통해 Elasticsearch와 Kibana를 재실행합니다.

nohup 엘라스틱서치_설치경로/bin/elasticsearch &
nohup Kibana_설치경로/bin/Kibana &

 

그럼 끝!

 

제대로 설정이 완료되었는지 확인

GET _analyze
{
  "tokenizer": "nori_tokenizer",
  "text": [
    "동해물과 백두산이"
  ]
}

다시 아까 실패했던 query를 실행해보면

{
  "tokens" : [
    {
      "token" : "동해",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "물",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "word",
      "position" : 1
    },
    {
      "token" : "과",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "word",
      "position" : 2
    },
    {
      "token" : "백두",
      "start_offset" : 5,
      "end_offset" : 7,
      "type" : "word",
      "position" : 3
    },
    {
      "token" : "산",
      "start_offset" : 7,
      "end_offset" : 8,
      "type" : "word",
      "position" : 4
    },
    {
      "token" : "이",
      "start_offset" : 8,
      "end_offset" : 9,
      "type" : "word",
      "position" : 5
    }
  ]
}

위처럼 이번에는 제대로 결과가 나오는 것을 확인할 수 있습니다.

 

읽어주셔서 감사합니다.

Comments