2016-09-29 74 views
0

我试图执行elasticsearch查询作为GET请求,以便从我创建的索引中提取数据。索引中的数据是来自MySQL DB的表格,通过logstash配置。如何在我的elasticsearch查询中使用MySQL sum()和group by clause?

这里是没有IN子句我的要求:

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。我试图在网络上进行搜索,但找不到任何解决方案。

任何帮助可以appreaciated。

回答

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'要求?我尝试使用'邮递员'导入这个curl,但是然后它说'无效格式'。 – Kulasangar

+1

我已经更新了我的答案 – Val

+0

“AGGS”:{ “总”:{ “总和”:{ “场”: “chargeAmount” }} } 什么 上面做它得到的总和来自上述curl请求的'chargeAmount'?问题是,我的数据库中的字段(chargeAmount)是'varchar',我猜'sum'在这里需要一个数字值。不是吗? – Kulasangar