1

我正在用 elasticsearch 建立一个排行榜。我想使用以下查询查询所有积分大于给定数量的文档:

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

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

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

编辑:我了解到我正在寻找的是设置search_typecount. 但是,我不确定如何使用 elastic.js 执行此操作。任何节点愿意提出他们的建议吗?

4

1 回答 1

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
          }
        }
      }
    }
  }
}
于 2014-04-25T05:43:07.347 回答