2016-07-15 15 views
0

Ich habe 2 Anfragen:Leistungsabfrage in Elasticsearch

GET _search 
{ 
    "query": { 
    "constant_score": { 
     "filter": { 
     "term": { 
      "idpays": 250 
     } 
     } 
    } 
    } 
} 

und

GET _search 
{ 
    "query": { 
    "constant_score": { 
     "filter": { 
     "bool": { 
      "must": { 
      "term": { 
       "idpays": 250 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Thesen 2 Abfragen die gleichen Ergebnisse zurück. Welcher hat die beste Leistung? Der erste oder der zweite mit bool und must?

Grüße

Antwort

1

Da Elasticsearch all lucene unter der Haube nutzt die Abfragen als einfache lucene Abfragen neu geschrieben werden, bevor sie ausgeführt werden. Wenn Sie für eine einfache Aufgabe zu komplizierte Abfragen verwenden, benötigt Elasticsearch mehr Zeit, um die Abfrage in eine einfachere umzuschreiben.

add „Profil“: true an der Wurzel Ihrer Anfrage eine detaillierte Analyse der Performance-Statistiken der Abfrage zurückzukehren und einen Blick auf die Rewrite Zeit in Anspruch nehmen. Je größer die Zeit, desto komplexer ist die Abfrage. Ein schneller Blick sagt mir, dass der zweite langsamer sein sollte, aber Sie sollten die Ergebnisse selbst analysieren.