我试图让一个或几个ES请求计算我当前搜索中未包含的条款。
让我详细说明....我的前端看起来像这样:
我当前已选中已关闭,因此其他项目应显示如果我要包含该术语,他们将添加多少项目。
假设关闭== 500且拒绝== 100;
当我关闭时,被拒绝的字段应附加数字100。如果我取消选择已关闭,则应显示数字500.如果我选择拒绝且不选择已关闭,则还应显示500.
够简单吧?我们只需添加一个计算状态字段的存储桶,它将为每个项目返回一个存储桶,然后我们从中获取值并显示它。
那部分我得到:)但是......当我实际添加一个术语(例如一个过滤NoOffer的术语)时,水桶不会包含其他字段......
这就是我的查询(全局存储区:ChintanShah25)
{
"size": 50,
"from": 1,
"sort": [
{
"createdAt": "desc"
}
],
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"wildcard": {
"fromPlace": "*rotter*"
}
}
]
}
},
{
"bool": {
"should": [
{
"wildcard": {
"status": "closed"
}
}
]
}
}
]
}
},
"aggs": {
"status": {
"global": {},
"aggs": {
"all_status": {
"terms": {
"field": "status.raw",
"size": 10
}
}
}
}
}
}
全局现在显示所有不同的状态代码,但它没有考虑到语句的其余部分。 " fromPlace"过滤器没有得到应用。
答案 0 :(得分:0)
我猜你正在寻找global aggregation,它将包括所有字段而不管查询。如果需要,您还可以使用filter aggregation作为选择性统计信息。
{
"query": {
"term": {
"status": {
"value": "closed"
}
}
},
"size": 0,
"aggs": {
"everything": {
"global": {},
"aggs": {
"all_status": {
"terms": {
"field": "status.raw",
"size": 10
}
}
}
}
}
}