我有一个主查询,我需要几个子查询的匹配数。用solr的话来说,我需要一个facet.query。我缺少的是一个简单的doc_count
聚合,比如value_count 聚合。
有什么建议么?
我发现了两种我不喜欢的可能解决方案:
- 使用带有value_count指标的过滤器聚合:
_id
例子:
GET _search
{
"query": {
"match_main": {}
},
"aggs": {
"facetvalue1": {
"filter": {
"bool": {
"should": [
{"match": { "name": "fred" }},
{"term": { "lastname": "krueger" }}
]
}
},
"aggs": {
"count": {
"value_count": {
"field": "_id"
}
}
}
},
"facetvalue2": {
"filter": {
"term": { "name": "freddy" }
},
"aggs": {
"count": {
"value_count": {
"field": "_id"
}
}
}
}
}
}
- 使用多搜索 API
例子:
GET _msearch
{"index":"myindex"}
{"query":{"match_main": {}}}
{"index":"myindex"}
{"size": 0, "query":{"match_main": {}}, "filter": {"bool": {"should":[{"match": { "name": "fred" }},{"term": { "lastname": "krueger" }}]}}}
{"index":"myindex"}
{"size": 0, "query":{"match_main": {}},"filter": {"term": { "name": "freddy" }}}
我看到解决方案 2 更快,但可以想象match_main
为复杂的查询!因此,如果有一个doc_count:{}
而不是value_count:{"field":"_id"}
.
但回到我的基本问题:elasticsearch 中的 solr 对应物是什么facet.query
?