使用弹性搜索,我试图使用过滤器来计算两个相关模型中的链接数。
我的问题有很多票。
我有一个投票映射,它为每个投票的问题ID编制索引,并且正在进行
curl -XGET localhost:9200/votes/_search -d '{query : {"constant_score" : {"filter" : { "term" : {"question_id" : 5} }, "boost" : 1.0 } }}'
问题是这会返回所有结果。是否可以简单地获取一个计数?
答案 0 :(得分:2)
只需在查询字符串中添加search_type=count
:
curl -XGET localhost:9200/votes/_search?search_type=count -d '{
"query" : {
"constant_score" : {
"filter" : { "term" : {"question_id" : 5} }
}
}
}'
就是说,正如@phoet建议的那样,你可能想要使用facet。
例如,对于前10个问题:
curl -XGET 'http://127.0.0.1:9200/votes/_search?pretty=1&search_type=count' -d '
{
"facets" : {
"votes" : {
"terms" : {
"field" : "question_id"
}
}
}
}
'
或者只是对于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"
}
}
}
}
'