我如何在弹性搜索查询中使用MySQL sum()和group by子句?

时间:2016-09-29 08:41:05

标签: mysql elasticsearch get elasticsearch-query

我正在尝试执行require_once 'Mage/Checkout/controllers/CartController.php'; class Kreativ_Buynow_CartController extends Mage_Checkout_CartController{ public function addAction(){ foreach ($this->_getCart()->getQuote()->getAllItems() as $items) { if($items->getProductId() == 933){ $value = $items->getQty(); $prd = Mage::getModel('catalog/product')->load(943); $this->_getCart()->addProduct($prd,$value)->save(); $this->_getSession()->setCartWasUpdated(true); } } return parent::addAction(); } 查询作为elasticsearch请求,以便从我创建的索引中提取数据。索引中的数据是来自GET DB的表,通过MySQL配置。

这是我没有IN子句的请求:

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

在上面,我应该能够追加logstash& sum(chargeAmount+0)。我尝试在网上搜索,但找不到任何解决方案。

可以提供任何帮助。

1 个答案:

答案 0 :(得分: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"
                }
             }
          }
      }
   }
}'

在Postman中,它看起来像这样:

enter image description here