Подтвердить что ты не робот

Имеет ли значение, является ли фильтр внутри или вне фильтрованного запроса?

Пока эти два дают мне тот же результат, в чем разница между наличием фильтра внутри или снаружи? Есть ли разница в производительности или действиях за кулисами?

"query": {
    "filtered": {
        "query":  { "match": { "email": "business opportunity" }},
        "filter": { "term":  { "folder": "inbox" }}
    }
}
"query": {
    "filtered": {
    "query":  { "match": { "email": "business opportunity" }}
    }
},
"filter": {
    "term":  { "folder": "inbox" }
}
4b9b3361

Ответ 1

Фильтр внутри запроса

Elasticsearch выполнит запрос и фильтр в том, что когда-либо будет более эффективным, чтобы уменьшить набор результатов и получить ответ как можно быстрее. Это называется filter_query

Фильтр после запроса

Запрос запускается первым, а затем результаты фильтруются, прежде чем возвращать их клиенту. Это называется post_filter.

Хотя post_filter менее эффективен, он может быть полезен при объединении с агрегацией - агрегированные значения не будут учитывать post_filter, т.е. агрегирование будет только на результатах запроса.