Elastic Search가 title이 완전 일치해야 결과에 나오던 문제 발생

N-Gram Tokenizer - 공백 혹은 구두점을 만나는 것으로 단어를 나누고, 해당 단어의 슬라이스 해서 토큰으로 만듬 ex) ngramquick → [ng, gr, ra, am, … ck] N-Gram이 2일 경우

해당 프로젝트에서는 Min N-Gram을 2, Max N-Gram을 6로 지정하여 구축했습니다.

+wild card - 와일드카드 패턴과 일치하는 용어가 포함된 문서들을 전부 리턴합니다.

curl -X PUT "<http://localhost:9200/product>" -H 'Content-Type: application/json' -d '{
  "settings": {
	"index" : {
      "max_ngram_diff": 12
    },
    "analysis": {
      "analyzer": {
        "ngram_analyzer": {
          "type": "custom",
          "tokenizer": "my_ngram"
        }
      },
      "tokenizer": {
        "my_ngram": {
          "type": "ngram",
          "min_gram": 2,
          "max_gram": 6,
          "token_chars": ["letter", "digit"]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "ngram_analyzer"
      }
    }
  }
}'

처음에 Product를 만들 때 mapping과 setting을 추가해줘야 합니다. 기존에 있던 document가 있는 상태에서 할 경우 오류가 많이 발생해서 아예 기존의 Product의 Delete를 진행하고 틀을 짜고 Logstash로 다시 데이터를 삽입했습니다.