Elasticsearch Java API - 如何在不检索文档的情况下获取文档数量

ash*_*999 3 java elasticsearch

我需要获取索引中的文档数量.不是文件本身,而是这个"多少".

最好的方法是什么?

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-count.html.但我希望用Java做到这一点.

还有https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.4/count.html,但它看起来很古老.

我可以获得给定索引中的所有文档,并得出"多少".但必须有更好的方法.

eva*_*njd 8

使用搜索API,但将其设置为不返回任何文档,并从它返回的SearchResponse对象中检索命中数.

例如:

import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.index.query.QueryBuilders.*;

SearchResponse response = client.prepareSearch("your_index_goes_here")
    .setTypes("YourTypeGoesHere")
    .setQuery(QueryBuilders.termQuery("some_field", "some_value"))
    .setSize(0) // Don't return any documents, we don't need them.
    .get();

SearchHits hits = response.getHits();
long hitsCount = hits.getTotalHits();
Run Code Online (Sandbox Code Playgroud)