글자 일부 검색을 위한 ElasticSearch학습과 해결책 제시

property type지정시 text_flied와 keyword의 차이 를 안다는 가정하에 설명함.

따라서 query문 中 query_stringwilecard(*)를 사용 하여 진행해봄

customer_first_name속성은 text_flied이다 - Relevance

Untitled

Untitled

동일한 결과를 가져옴

Untitled

day_of_week속성은 keyword이다 - Exact value

Untitled

Exact value이기 때문에 대소문자 까지 똑같아야 한다

Untitled

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

Untitled

대소문자 하나라도 틀리면 뒤에 wildcard를 써도 검색이 안된다

Untitled

결론

mapping시 property type 를 keyword가 아닌 text_field로 지정 해야 한다.

mapping시 필드명 타입은 **기본으로 text(Searchabel)**이고 Aggregation(집계),Sort(정렬)에는 Keyword타입을 권장한다 - Elastic Guide 中

그러면 wildcard를 이용하여 글자 중간을 검색해도 한단어 또는 문장을 찾을수 있게 된다.