fuzzy 쿼리는 elasticsearch에서 제공하는 query dsl 으로 키워드와 유사한 단어를 검색해준다.
예를 들어서 apple을 검색하면 appie 같은 단어도 찾아준다.
일단 fuzzy 쿼리를 사용하는 방식이 여러가지가 있다.
fnzzy query 로 사용하기GET /_search
{
"query": {
"fuzzy": {
"user.id": {
"value": "ki"
}
}
}
}
match query에 fuzziness 옵션 주기GET /_search
{
"query": {
"match": {
"message": {
"query": "this is a test",
"fuzziness': AUTO
}
}
}
}
두 쿼리의 차이점은 다음과 같다.
fuzzy 쿼리는 search_analyzer를 무시하고 검색match+fuzziness 검색은 search_analyzer를 태운 뒤 fuzziness옵션이 적용예를 들어서,
search_analyzer로 영문 형태소분석을 적용하여 plays가 play로 분석이 되면,
match+fuzziness 검색은 plays 로 검색시 play, plays 두 가지 키워드를 확장해서 검색세트를 만들고 이를 검색한다.
하지만 fuzzy쿼리 검색은 play 자체만 확장하여 검색세트를 구성해 검색 한다.
이에 대해 자세한 설명은 fuzzy쿼리 동작 방식 에 자세히 기재되어 있다.
공통적인 fuzzy의 작동방식은 다음과 같다.