Domanda Importa se il filtro è all'interno o all'esterno di una query filtrata?


Mentre questi due mi danno lo stesso risultato, qual è la differenza tra avere il filtro dentro o fuori? C'è una differenza in termini di prestazioni o azioni dietro le quinte?

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

14
2018-03-09 08:33


origine


risposte:


Filtra all'interno di una query

Elasticsearch eseguirà la query e filtrerà in qualsiasi modo sia più efficiente per ridurre i risultati impostati e ottenere la risposta il più rapidamente possibile. Questo è indicato come a filtered_query

Filtra dopo una query

La query viene eseguita prima e poi i risultati vengono filtrati prima di restituirli al client. Questo è indicato come a post_filter.

Sebbene un post_filter sia meno efficiente, può essere utile quando si combina con un'aggregazione: i valori aggregati non prenderanno in considerazione il post_filter, cioè l'aggregazione sarà solo sui risultati della query.


22
2018-03-09 10:35