2015-11-27 2 views
0

Мне нужно построить запрос, который возвращает логическое значение, которое может читать Java. Когда я пытаюсь это сделать:Elasticsearch Java API: возвращает логическое значение

QueryBuilder qb = matchQuery(
    "user.name",     
    "user123" 
); 
SearchResponse response = client.prepareSearch("logstash-*").addFields("user.name") 
.setTypes("names").setQuery(qb) 
.execute() 
.actionGet(); 

Он возвращает все хиты для пользователя123. Если user123 не существует, она возвращает следующее:

{ 
    "took" : 69, 
"timed_out" : false, 
"_shards" : { 
    "total" : 75, 
    "successful" : 75, 
    "failed" : 0 
}, 
"hits" : { 
    "total" : 0, 
    "max_score" : null, 
    "hits" : [ ] 
} 
    } 

Что мне нужно, однако, является истинным или ложным значением. Если пользователь существует, то true, если нет, то false. Как я могу это сделать?

спасибо.

ответ

1

Как насчет Count API и проверьте, равен ли результат 0 или нет?

QueryBuilder qb = matchQuery(
"user.name",     
"user123" 
); 
SearchResponse response = client.prepareCount("logstash-*").addFields("user.name") 
         .setTypes("names").setQuery(qb) 
         .execute() 
         .actionGet(); 
return response.count() != 0 // return true if found 
+0

..... oh .. не думал об этом .. спасибо! –

Смежные вопросы