The final topic that we should touch on before leaving multifield queries is that of exact-value not_analyzed
fields. It is not useful to mix not_analyzed
fields with analyzed
fields in multi_match
queries.
다중 field 검색을 마치기 전에, 다뤄야 할 마지막 주제는, exact-value not_analyzed
field이다. multi_match
query에서, not_analyzed
field와 analyzed
field를 섞는 것은 유용하지 않다.
The reason for this can be demonstrated easily by looking at a query explanation. Imagine that we have set the title
field to be not_analyzed
:
그 이유는 query explanation을 보면 쉽게 알 수 있다. title
field를 not_analyzed
로 설정했다고 생각해 보자.
GET /_validate/query?explain { "query": { "multi_match": { "query": "peter smith", "type": "cross_fields", "fields": [ "title", "first_name", "last_name" ] } } }
Because the title
field is not analyzed, it searches that field for a single term consisting of the whole query string!
title
field가 not_analyzed로 설정되었기 때문에, 전체 query string으로 구성된, 단일 단어로 해당 field를 검색한다.
title:peter smith ( blended("peter", fields: [first_name, last_name]) blended("smith", fields: [first_name, last_name]) )
That term clearly does not exist in the inverted index of the title
field, and can never be found. Avoid using not_analyzed
fields in multi_match
queries.
해당 단어는, title
field의 inverted index에, 분명히 존재하지 않고, 절대 찾을 수 없다. multi_match
query에서 not_analyzed
field를 사용하는 것을 피하자.
'2.X > 2. Search in Depth' 카테고리의 다른 글
2-3-09. Custom _all Fields (0) | 2017.09.28 |
---|---|
2-3-10. cross-fields Queries (0) | 2017.09.28 |
2-4. Proximity Matching (0) | 2017.09.24 |
2-4-1. Phrase Matching (0) | 2017.09.24 |
2-4-2. Mixing It Up (0) | 2017.09.24 |