2015-03-13 5 views
3

Я пишу Elasticsearch агрегирование запросов, чтобы найти общее количество доступных:Elasticsearch агрегирование в PHP

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

И я получаю счет правильно. Как написать эти типы запросов в php-коде? Поскольку я новичок в elasticsearch, любая помощь была бы полезной Заранее спасибо

+0

Посмотрите на это http://www.elastic.co/guide/en/elasticsearch/client/php-api/current/ – smarber

ответ

4

Принимая идею от github. Синтаксис agg (и search) PHP следует JSON API 1: 1. Таким образом, вы можете взять агрегацию выше и просто перевести его в PHP массивы следующим образом:

  $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); 

агрегации выполняется параллельно поиски, так просто указать поисковый запрос, и вы получите обратно поиск хитов элемента, а также как элемент aggs