首页 > 解决方案 > 从 spark 调用 elasticsearch“_count”端点

问题描述

问题:计算elasticsearch中按日期从spark过滤的记录数

请帮助查找如何直接从 spark (2.4.0) 调用此端点

POST index_name.*/_count
{
  "query": {
    "range": {
      "date_field_name": {
        "gte": "2021-02-09",
        "lte": "2021-02-09"
      }
    }
  }
}

我已经尝试了以下解决方案,但它非常慢,因为计算是在 spark 端(不是通过 elasticsearch)完成的,并且数据量很大

val esQuery = f"""{
       "bool": {
           "filter": [
               {
               "range": {
                   "date_field_name": {
                       "gte": "2021-02-09",
                       "lte": "2021-02-09"
                    }
                }
            }
         ]
    }
}""".stripMargin
var df = spark.sqlContext.read.format("es").option("es.query", esQuery).load("index_name.*").select(col("date_field_name")).groupBy("date_field_name").count()

标签: apache-sparkelasticsearchbigdata

解决方案


推荐阅读