ElasticSearch计算对的不同值

时间:2017-09-14 19:15:52

标签: elasticsearch

假设我们有一个sql表存储信息,例如(销售时间,书籍,销售人员),它存储一个销售人员销售该书的时间。我们希望有一个受大多数销售人员销售的热门图书清单。

sql就像这样

select book, count (sale-person)
from select distinct (book, sale-person) from table
group by book
order desc

如何在elasticsearch中实现此类搜索?

假设我们的数据是这样的

{ "time": "time-value",
  "book" : "book name",
  "sales" : "person"
}

感谢。

1 个答案:

答案 0 :(得分:1)

如果我理解得很好,你想做一个嵌套聚合吗?

类似的东西:

GET /my_index/_search
{
   "size": 0,
   "query": {
      "match_all" : {}
   },
   "aggs": {
      "time_windows": {
         "date_histogram": {
            "field": "time",
            "interval" : "1h"
         },
         "aggs": {
            "books": {
               "terms": {
                  "size": 5,
                  "field": "book"
               }
            }
         }
      }
   }
}