term 쿼리, 마지막 단어는 prefix 쿼리로 bool 쿼리 처리한다.analyzer 옵션 추가minimum_should_match, operator 적용 가능prefix 쿼리 적용되는 마지막 단어를 제외하고 term 쿼리 적용되는 각 단어는 아래 옵션들이 적용된다.fuzziness, prefix_length, max_expansions, fuzzy_transpositions, fuzzy_rewriteGET /_search
{
"query": {
"match_bool_prefix" : {
"message" : "quick brown f"
}
}
}
quick, brown 은 term 쿼리, 마지막 단어인 f 만 prefix 쿼리로 적용하여 bool 쿼리 should 처리GET /_search
{
"query": {
"bool" : {
"should": [
{ "term": { "message": "quick" }},
{ "term": { "message": "brown" }},
{ "prefix": { "message": "f"}}
]
}
}
}
prefix 쿼리, 그외 나머지 단어는 match_phrase 쿼리로 검색GET /_search
{
"query": {
"match_phrase_prefix": {
"message": {
"query": "quick brown f"
}
}
}
}
주의) 자동완성에 사용하는 것은 부적합
quick brown f 로 검색했을 때, quick, brown 이 phase 매칭되는 문서에서 정렬된 term dictionary 에서 첫 50개에 대해서만 f 로 시작하는 term 이 있는지 검색한다.자동완성은 edge ngram 을 사용하는 것이 더 유리