Есть ли способ получить количество попаданий для фильтра, не возвращая все результаты фильтра - PullRequest
1 голос
/ 05 января 2012

С помощью упругого поиска я пытаюсь использовать фильтры для подсчета количества ссылок в двух связанных моделях.

У меня есть вопросы, которые has_many голосов.

У меня есть отображение голосов, которое индексирует идентификатор вопроса каждого голоса, и я делаю

curl -XGET localhost:9200/votes/_search -d '{query : {"constant_score" : {"filter" : { "term" : {"question_id" : 5} }, "boost" : 1.0 } }}'

Проблема в том, что это возвращает все результаты. Можно ли просто взять счет вместо?

1 Ответ

2 голосов
/ 05 января 2012

Просто добавьте search_type=count в строку запроса:

curl -XGET localhost:9200/votes/_search?search_type=count -d '{
    "query" : {
        "constant_score" : {
            "filter" : { "term" : {"question_id" : 5} }
        } 
    }
}'

При этом, как подсказал @phoet, вы можете вместо этого использовать фасеты.

Например, для 10 лучшихвопросы:

curl -XGET 'http://127.0.0.1:9200/votes/_search?pretty=1&search_type=count'  -d '
{
   "facets" : {
      "votes" : {
         "terms" : {
            "field" : "question_id"
         }
      }
   }
}
'

Или просто вопрос_ид 5:

curl -XGET 'http://127.0.0.1:9200/votes/_search?pretty=1&search_type=count'  -d '
{
   "query" : {
      "constant_score" : {
         "filter" : {
            "term" : {
               "question_id" : 5
            }
         }
      }
   },
   "facets" : {
      "votes" : {
         "terms" : {
            "field" : "question_id"
         }
      }
   }
}
'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...