Elasticsearch教程 ,Elasticsearch count 查詢,Elasticsearch 查詢是否存在
阿新 • • 發佈:2019-02-12
一、Elasticsearch Count查詢
當我們使用 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))//設定查詢型別
.setSearchType(SearchType.COUNT)//設定查詢型別,有的版本可能過期
.setSize(0)//設定返回結果集為0
.get();
long length = response.getHits().totalHits();
最後返回了符合結果集的Count
數量,但是不返回結果集,不反回結果集靠size = 0
來決定,當然我覺得 Elasticsearch 在一些版本里應該會對資料級別的Count
查詢應該有更好的優化,自己對應想當前版本的 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數量
1.4 Elasticsearch Type Count查詢
CountResponse response = client.prepareCount("index1","index2").setTypes("type1","type2").get();
long count = response.getCount();//返回符合條件的資料
二、Elasticsearch 查詢資料是否存在
2.1 curl 方式查詢資料是否存在:
查詢:
$ 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" }
}
}'
返回結果:
{
"exists" : true
}
Java API 我這個版本我沒找到,其他版本有一些應該有 Java API
。
2.2 Elasticsearch Java API 資料Exists判斷。
/**
* 判斷資料是否存在
* @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))//設定查詢型別
.setSearchType(SearchType.COUNT)//設定查詢型別,有的版本可能過期
.setSize(0);//設定返回結果集為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();