使用elastic.js查询与过滤器匹配的元素数量?

时间:2014-04-25 04:43:08

标签: node.js elasticsearch elasticjs

我正在使用elasticsearch构建排行榜。我想使用以下查询查询点数大于给定金额的所有文档:

{
"constant_score" : {
    "filter" : {
        "range" : {
            "totalPoints" : {
                "gt": 242
            }
        }
    }
}

这很有效 - elasticsearch适当地返回点大于242的所有文档。但是,我真正需要的是匹配此查询的元素数。由于我通过网络发送结果,如果查询只返回计数,而不是与过滤器匹配的所有文档,将会很有帮助。

如何让elasticsearch仅报告与过滤器匹配的文档数量?

编辑:我已经了解到我正在寻找的是将search_type设置为count。但是,我不知道如何用elastic.js做到这一点。任何愿意投入建议的节点制作者?

1 个答案:

答案 0 :(得分:1)

您可以将查询类型计数用于此目的:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-search-type.html#count

这是一个可以帮助你的例子:

GET /mymusic/itunes/_search?search_type=count
{
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "range": {
          "year": {
            "gt": 2000
          }
        }
      }
    }
  }
}