如何在Elasticsearch的count API中包含group子句

时间:2019-06-25 09:40:20

标签: elasticsearch

对于我的应用程序,我使用的是Elasticsearch提供的count API,用于使用RestHighLevel Client获取Java中我的搜索查询的合计值。但是,我面临着这样一种情况,我需要根据需要包含按条件分组的货币来获取汇总。关于如何使用count API Java代码按条件添加分组的任何想法?

1 个答案:

答案 0 :(得分:0)

以下是使用聚合函数获取计数的示例查询。

 {
  "size" : 0,
  "query" : {
    "term" : {
      "columnid" : {
        "value" : 1,
        "boost" : 1.0
      }
    }
  },
  "_source" : false,
  "stored_fields" : "_none_",
  "aggregations" : {
    "groupby" : {
      "composite" : {
        "size" : 10,
        "sources" : [
          {
            "14" : {
              "terms" : {
                "field" : "columnid",
                "missing_bucket" : true,
                "order" : "asc"
              }
            }
          }
        ]
      }
    }
  }
}
  

也可以使用以下查询将SQL查询转换为kibana查询-

 POST _xpack/sql/translate
    {
       "query": "SELECT COUNT(*), columnid FROM Indexname WHERE columnid=1 group by columnid ",
       "fetch_size": 10
    }

如果可以解决您的问题,请标记答案。