본문 바로가기

programmer/Elasticsearch

[Elasticsearch] 영문 검색 시 띄어쓰기 제거[1/2]

Elk에서 영문 검색 시 띄어쓰기를 하지 않는경우 검색 방법을 알아보자.

kibana에서 실행 하면 된다.

index 생성 setting, mapping 입력

PUT english_pattern_replace_test
{
  "settings": 	  {
    "analysis": {
      "char_filter": {
        "whitespace_remove": {
          "type": "pattern_replace",
          "pattern": "\\s+",
          "replacement": ""
        }
      },
      "analyzer": {
        "custom_analyzer": {
          "type": "custom",
          "tokenizer": "whitespace",
          "filter": ["lowercase", "asciifolding"],
          "char_filter": ["whitespace_remove"]
        }
      }
    }
  },
   "mappings": {
    "_doc": {
      "dynamic": "false",
      "properties": {
            "title_eng": {
              "type": "keyword",
              "fields": {
                "analyze": {
                  "type": "text",
                  "term_vector": "yes",
                  "analyzer": "custom_analyzer"
                }
              }
            }
        }
      }
	}	  
}

Analyser 확인

GET english_pattern_replace_test/_analyze
{
  "analyzer": "custom_analyzer",
  "text": [
    "Elastic Search"
  ]
}



-----------out-----------
{
  "tokens" : [
    {
      "token" : "elasticsearch",
      "start_offset" : 0,
      "end_offset" : 14,
      "type" : "word",
      "position" : 0
    }
  ]
}

 

색인 삽입

PUT english_pattern_replace_test/_doc/0 
{
  "title_eng" : "Elastic Search"
  
}
PUT english_pattern_replace_test/_doc/1
{
  "title_eng" : "Elastic Search Guide"
  
}

검색

GET english_pattern_replace_test/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "dis_max": {
            "queries": [
              {
                "multi_match": {
                  "query": "ElasticSearch",
                  "fields": [
                    "title_eng.analyze"
                  ],
                  "type": "cross_fields",
                  "operator": "OR"
                }
              }
            ]
          }
        }
      ]
    }
  }
}


-----------out----------------
{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.2876821,
    "hits" : [
      {
        "_index" : "english_pattern_replace_test",
        "_type" : "_doc",
        "_id" : "0",
        "_score" : 0.2876821,
        "_source" : {
          "title_eng" : "Elastic Search"
        }
      }
    ]
  }
}

 

 

참조 사이트

https://www.movingjin.com/20

https://findstar.pe.kr/2018/07/14/elasticsearch-wildcard-to-ngram/

https://velog.io/@hanblueblue/Elastic-Search-3

반응형
사업자 정보 표시
라울앤알바 | 장수호 | 서울특별시 관악구 봉천로 13나길 58-10, 404호(봉천동) | 사업자 등록번호 : 363-72-00290 | TEL : 010-5790-0933 | Mail : shjang@raulnalba.com | 통신판매신고번호 : 2020-서울관악-0892호 | 사이버몰의 이용약관 바로가기