'wildcard'에 해당되는 글 1건

  1. 2018.04.12 [Elasticsearch] WildcardQuery 알아보기

[Elasticsearch] WildcardQuery 알아보기

Elastic/Elasticsearch 2018. 4. 12. 15:46

참고문서)

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html


WildcardQuery 는 사실 추천 하지 않지만 필요에 따라 사용해야 할 수도 있습니다.

성능적으로 좋은 API 는 아니기 때문에 추천 하지 않는 것이지 기능적으로는 유용할 수도 있습니다.


[Field Type]

Keyword : not_analyzed

Text(String) : analyzed


[Lucene]

WildcardQuery -> MultiTermQuery


[Elasticsearch]

WildcardQueryBuilder


[Usage]

WildcardQuery 는 기본적으로 field type 의 색인 속성과는 상관 없습니다.

not_analyzed field 에 대해서 질의 할 때와 analyzed field 에 대해서 질의 할 때 조금 모호 할 수 있습니다.

즉, term query 를 사용하기 때문에 아래와 같이 예를 들겠습니다.

Field name : title

Text value : nike clothes


Case 1)

not_analyzed field)

term : nike clothes


"query" : {

"wildcard" : {

"title" : "ni*e"

}

}


not matched


결과가 나오지 않는 이유는 추출된 term 이 "nike clothes" 이기 때문에 "ni*e" 로 했을 경우 추출 텀의 제일 마지막 문자가 e 가 아니기 때문에 매칭이 되지 않은 것입니다.

매칭이 되게 하려면 "ni*" 또는 "ni*s" 로 해야 매칭이 됩니다.


Case 2)

analyzed field)

terms : [nike, clothes]


"query" : {

"wildcard" : {

"title" : "ni*e"

}

}


matched


이 경우는 추출된 term 이 두 개 이며, nike 라는 텀에 대해서 매칭이 된 것입니다.



: