2016-09-29 1 views
0

Я пытаюсь выполнить запрос elasticsearch как запрос GET, чтобы получить данные из индекса, который я создал. Данные, которые находятся в индексе, представляют собой таблицу из MySQL DB, настроенную, хотя logstash.Как я могу использовать MySQL sum() и group by в моем запросе elasticsearch?

Вот мой запрос без оговорки в:

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

В выше, я должен иметь возможность добавить sum(chargeAmount+0) & group by. Я попытался дать ему поиск в Интернете, но не смог найти никаких решений.

Любая помощь может быть воспринята.

ответ

1

Все, что вы положили после q=... в запросе используется тот же синтаксис, что query_string query, так что вы можете переписать запрос использовать query_string и использовать агрегированные, чтобы вычислить требуемую сумму:

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" 
       } 
      } 
      } 
     } 
    } 
}' 

В Почтальон, это будет выглядеть следующим образом:

enter image description here

+0

, но потом, как я собираюсь отправить это 'curl' запрос от почтальона или что-то? Я попытался импортировать этот завиток, используя 'postman', но затем он говорит' недопустимый формат'. – Kulasangar

+1

Я обновил свой ответ – Val

+0

"Aggs": { "всего": { "сумма": { "поле" : "chargeAmount" } }} что выше делает это, чтобы получить сумму 'chargeAmount' из вышеуказанного запроса на завивание? Проблема в том, что поле (chargeAmount) в моем db является «varchar», и я думаю, 'sum' здесь ожидает числовое значение. не так ли? – Kulasangar