Elasticsearch 基础教程

Elasticsearch 高级教程

Elasticsearch 插件

Elasticsearch 笔记

Elasticsearch FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/elasticsearch-get-matched-document-count.html

es 获取总数的几种方式

Elasticsearch 笔记 Elasticsearch 笔记


elasticsearch(es)获取匹配文档的总条数的接口是什么?各种方式如何使用?

推荐答案

针对获取匹配文档的总数需求,es 对此提供了单独的 count 接口。

{index}/_count

kibana 的示例

假设针对 qa 索引,针对 question 和 answer 字段匹配 elasticsearh 的文档总数显示,kibana dev tools 中的代码如下:

GET qa/_count
{
  "query": {
    "multi_match": {
      "query": "elasticsearch",
      "fields": ["question","answer"]
    }
  }
}

返回结果可能如下:

{
  "count": 327,
  "_shards": {
    "total": 8,
    "successful": 8,
    "skipped": 0,
    "failed": 0
  }
}

curl 命令快速查看

curl 命令支持 http 协议,通过 elasticsearch 的 http restful 接口访问代码示例如下:

curl -X GET -H "Content-Type:application/json" -d '{"query":{"multi_match":{"query":"elasticsearch","fields":["question","answer"]}}}' http://{es_url}:{es_url,eg:9200}/qa/_count

java ElasticsearchTemplate _count

如果项目中,使用 java spring-data-elasticsearch 的 ElasticsearchTemplate 操作 es,可以进行如下操作:

String[] count_match_field = new String[]{"question", "answer"};

MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders
        .multiMatchQuery(keyword, count_match_field)
        .minimumShouldMatch("100%");

SearchQuery searchQuery = new NativeSearchQueryBuilder()
        .withIndices(INDEX)
        .withQuery(multiMatchQueryBuilder)
        .build();

try {
    long count = elasticsearchTemplate.count(searchQuery);
    searchContext.getCommonSearchResultDTOWrapper().setTotal((int) count);
} catch (Throwable throwable) {
    log.error("qa count es error", throwable);
}

 

java 字符串根据指定分隔符进行分割有很多种方式,这里主要介绍常用的几种方式。 ...
在Java中,遍历`Map`有多种方式,以下是几种常见的实现方式,包括使用迭代器、`forEach`、`entrySet`等。假设我们有一个 ...
elasticsearch(es)如何获取最新一条数据,根据时间字段排序? ...
###方法一:使用StringBuilder拼接字符串实现过程:使用StringBuilder类创建一个可变字符串对象,然后遍历List集合 ...
python 字典遍历的有三大方式,分别是遍历 keys、遍历 values 和同时 遍历 keys 和 values。 ...