2016-09-29 1 views
0

Ich versuche eine elasticsearch Anfrage als GET Anfrage durchzuführen, um Daten aus dem Index, den ich erstellt habe, zu ziehen. Die Daten, die sich im Index befinden, sind eine Tabelle aus MySQL DB, konfiguriert unter logstash.Wie könnte ich MySQL sum() und group by-Klausel innerhalb meiner Elasticsearch-Abfrage haben?

Hier ist meine Anfrage ohne die Klausel IN:

http://localhost:9200/response_summary/_search?q=api:"location"+AND+transactionoperationstatus:"charged"+AND+operatorid='DIALOG'+AND+userid:test+AND+time:"2015-05-27"

In dem obigen sollte ich in der Lage sein sum(chargeAmount+0) & group by anhängen. Ich habe versucht, es im Internet zu suchen, konnte aber keine Lösungen finden.

Jede Hilfe könnte appreaciated werden.

Antwort

1

Was auch immer Sie setzen nach der q=... in Ihrer Abfrage die gleiche Syntax wie ein query_string query verwendet, so dass Sie Ihre Abfrage neu schreiben können query_string und Verwendung Aggregationen nutzen, um die gewünschte Summe zu berechnen:

curl -XPOST http://localhost:9200/response_summary/_search -d '{ 
    "query": { 
     "query_string": { 
      "query": "api:\"location\" AND transactionoperationstatus:\"charged\" AND operatorid:\"DIALOG\" AND userid:test AND time:\"2015-05-27\" AND responseCode:(401 403)" 
     } 
    }, 
    "aggs": { 
     "total": { 
      "terms": { 
       "field": "chargeAmount" 
      }, 
      "aggs":{ 
      "total": { 
       "sum": { 
        "field": "chargeAmount" 
       } 
      } 
      } 
     } 
    } 
}' 

In Postman, es wie folgt aussehen würde:

enter image description here

+0

aber dann, wie soll ich jetzt schreiben diese 'curl' Anfrage von Postbote oder so etwas? Ich habe versucht, diese Curl mit "Postman" zu importieren, aber dann heißt es "ungültiges Format". – Kulasangar

+1

Ich habe meine Antwort aktualisiert – Val

+0

"aggs": { "total": { "Summe": { "Feld": "chargeAmount" } } } , was die oben macht es die Summe zu erhalten 'chargeAmount' aus der obigen Curl-Anfrage? Das Problem ist, das Feld (chargeAmount) in meiner db ist ein 'varchar' und ich denke,' sum' erwartet hier einen Zahlenwert. nicht wahr? – Kulasangar