首页 > 解决方案 > 如何在弹性搜索的计数 API 中包含组子句

问题描述

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

标签: elasticsearch

解决方案


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

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

如果它解决了您的问题,请标记答案。


推荐阅读