Error deserializing co.elastic.clients.elasticsearch._types.analysis.Analyzer: Property ‘type’ not found

By | 2022년 12월 28일
Table of Contents

Error deserializing co.elastic.clients.elasticsearch._types.analysis.Analyzer: Property ‘type’ not found

이상한 오류가 생겨서 내용을 적어놓는다.

json 값은 아래와 같다.

오류 위치는 settings.analyzer.ngram_analyzer 였다.

인덱스 생성은 직접하게되면 정상적으로 생성하게 된다.

{
  "settings": {
    "number_of_shards": 1,
    "max_ngram_diff": 50,
    "number_of_replicas": 0,
    "analysis": {
      "filter": {
        "suggest_filter": {
          "type": "ngram",
          "min_gram": 1,
          "max_gram": 50
        }
      },
      "analyzer": {
        "ngram_analyzer": {
          "tokenizer": "ngram_tokenizer"
        }
      },
      "tokenizer": {
        "ngram_tokenizer": {
          "type": "ngram",
          "custom_token_chars": "+-_",
          "min_gram": "1",
          "max_gram": "10",
          "token_chars": [
            "letter",
            "digit",
            "custom"
          ]
        }
      }
    }
  }
}

그런데 co.elastic.clients:elasticsearch-java 에서 제공하는 API 를 이용해 생성하게 되면 오류가 발생한다.

원인은 아래와 같다.
원래는 디폴트값을 생략해도 정상적으로 실행이 되지만,
API 를 이용해 생성할 때는 디폴트값 또한 명시해 주어야 한다.

      "analyzer": {
        "ngram_analyzer": {
          "type": "custom",
          "tokenizer": "ngram_tokenizer"
        }
      },

답글 남기기