简体   繁体   中英

Elasticsearch aggregations in php

I am writing Elasticsearch aggregations queries to find the total count available:

  GET zap/_search
  {
   "aggregations": {
   "Brand_Name_Count": {
     "terms": {"field": "brand_name", "size" : 0}
         },
   "Stock_Status_Count" : {
      "terms" : { "field" : "stock_status", "size" : 50}
         },
   "Category_Id_Count" : {
       "terms" : { "field" : "category_id", "size" : 50}
         }
        }
      }

And I am getting the count properly. How do i write these type of queries in php code?? As i am new to elasticsearch any help would be helpful Thanks in advance

Taking idea from github. The agg (and search) PHP syntax follows the JSON API 1:1. So you can take your aggregation above and just translate it into PHP arrays like so:

$myQuery = [];  // Your query goes here

$params = [
    'index' => 'zap',
    'body' => [
        'aggs' => [
            'Brand_Name_Count' => [
                'terms' => [
                    'field' => 'brand_name',
                    'size' => 0
                ]
            ],
            'Stock_Status_Count' => [
                'terms' => [
                    'field' => 'stock_status',
                    'size' => 50
                ]
            ],
            'Category_Id_Count' => [
                'terms' => [
                    'field' => 'category_id',
                    'size' => 50
                ]
            ]
        ],
        'query' => $myQuery
    ]
];

$results = $client->search($params);

Aggregations are executed in parallel to searches, so just specify your search query and you'll get back a search hits element as well as the aggs element

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM