我必须在个人档案集合中进行搜索,每个个人档案都有firstName,middleName和lastName,性别关键字。
我添加了关于性别的术语汇总,它将返回男性和女性的计数。 我正在使用简单搜索(纯文本)查询来查找整个文档。当我使用查询作为查询字符串参数时,来自正文的查询对象不起作用。我想显示通过纯文本查询返回的配置文件列表,用户可以选择性别过滤器以过滤结果。
我的问题是我应该在哪里使用哪个过滤器选项,以便在应用过滤器后获得基于查询和文档的聚合结果。
我尝试使用全局聚合,但是它忽略了查询。我尝试使用聚合中的过滤器,但这就是过滤聚合。
例如:
如果http://localhost:9200/profiles/_search?q=dlinx
带有正文
{
"aggs": {
"Gender": {
"terms": {
"field": "gender"
}
}
}
}
将聚合结果返回为男性:10,女性:15,然后文档计数为25。在将性别过滤器应用为男性后,我期望结果为男性:10,女性:15,文档数为15
答案 0 :(得分:3)
您要搜索帖子过滤器= D
在汇总计数“完成”之后,仅用于过滤匹配的过滤器。
post_filter应用于搜索匹配项的末尾 搜索请求,已经计算出聚合之后
您的_search正文应该是这样的:
GET profiles/_search
{
"query": {
"match": {
"<yourfield>": "dlinx"
}
},
"aggs": {
"Gender": {
"terms": {
"field": "gender"
}
}
},
"post_filter": {
"term": {
"gender": "<theselectedGender>"
}
}
}