Elasticsearch教程 ,Elasticsearch count 查詢,Elasticsearch 查詢是否存在
一、Elasticsearch Count查詢
當我們使用 Elasticsearch 的時候,如果只想知道符合條件的結(jié)果集,應(yīng)該怎么查詢?
更多教程點擊: Elasticsearch教程 。
1.1 Elasticsearch count Java API 查詢
Client client = ESTools.client;
SearchResponse response = client.prepareSearch(MappingManager.ASK)
.setTypes(MappingManager.ASK)
.setQuery(new TermQueryBuilder("id", id))//設(shè)置查詢類型
.setSearchType(SearchType.COUNT)//設(shè)置查詢類型,有的版本可能過期
.setSize(0)//設(shè)置返回結(jié)果集為0
.get();
long length = response.getHits().totalHits();最后返回了符合結(jié)果集的Count 數(shù)量,但是不返回結(jié)果集,不反回結(jié)果集靠size = 0 來決定,當然我覺得 Elasticsearch 在一些版本里應(yīng)該會對數(shù)據(jù)級別的Count 查詢應(yīng)該有更好的優(yōu)化,自己對應(yīng)想當前版本的 API 。我的Version:2.0.2 。
1.2 Elasticsearch count Http API 查詢
POST - http://192.168.0.1:9200/index/type/_search/
{
"size" : 0,
"query" : {
"term" : {
"id" : "adf183208e9a4116353e9d9cd78f2b6a"
}
}
}
1.3 Elasticsearch Index Count查詢
CountResponse response = client.prepareCount("index1","index2").get();
long count = response.getCount();//返回當前index Count數(shù)量1.4 Elasticsearch Type Count查詢
CountResponse response = client.prepareCount("index1","index2").setTypes("type1","type2").get();
long count = response.getCount();//返回符合條件的數(shù)據(jù)
二、Elasticsearch 查詢數(shù)據(jù)是否存在
我也是認為 Elasticsearch 一些版本會有這個方法。下面看看官方的介紹:https://www.elastic.co/guide/en/elasticsearch/reference/2.3/search-exists.html
2.1 curl 方式查詢數(shù)據(jù)是否存在:
查詢:
$ curl -XGET 'http://localhost:9200/twitter/tweet/_search/exists?q=user:kimchy'
$ curl -XGET 'http://localhost:9200/twitter/tweet/_search/exists' -d '
{
"query" : {
"term" : { "user" : "kimchy" }
}
}'返回結(jié)果:
{
"exists" : true
} Java API 我這個版本我沒找到,其他版本有一些應(yīng)該有 Java API 。
2.2 Elasticsearch Java API 數(shù)據(jù)Exists判斷。
/**
* 判斷數(shù)據(jù)是否存在
* @param id
* @return
*/
public static boolean existsById(String id){
Client client = ESTools.client;
SearchRequestBuilder searchBuilder = client.prepareSearch(MappingManager.ASK)
.setTypes(MappingManager.ASK)
.setQuery(new TermQueryBuilder("id", id))//設(shè)置查詢類型
.setSearchType(SearchType.COUNT)//設(shè)置查詢類型,有的版本可能過期
.setSize(0);//設(shè)置返回結(jié)果集為0
SearchResponse response = searchBuilder.get();
long length = response.getHits().totalHits();
return length > 0;
}
2.3 Elasticsearch Java API 判斷 Index 是否存在。
//Index 可以多個
ExistsRequest request = new ExistsRequest("index1","index2");
ExistsResponse response = client.exists(request).get();
//返回是否存在
boolean exists = response.exists();2.4 Elasticsearch Java API 判斷 Type 是否存在。
//Index 可以多個
ExistsRequest request = new ExistsRequest("index1","index2").types("type1","type2");
ExistsResponse response = client.exists(request).get();
//返回是否存在
boolean exists = response.exists();
版權(quán)所屬:SO JSON在線解析
原文地址:http://suancuo.cn/blog/206.html
轉(zhuǎn)載時必須以鏈接形式注明原始出處及本聲明。
如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。
