带有多个过滤器的ElasticSearch
我正在尝试建立一个查询,该查询将找到所有用户文档(docType
=用户),然后根据许多过滤器对其进行过滤。例如位置,性别,年龄等。过滤器是根据我正在构建的搜索功能上的用户输入来添加/删除的。
以下没有结果:
{ "query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"and": {
"filters":
[
{
"term": {
"doc.docType": "user"
}
},
{
"term": {
"doc.data.profile.location" : "CA"
}
}
]
}
}
}
}
}
以下返回结果:
{ "query": {
"filtered": {
"query": {
"field": {
"doc.data.profile.location" : "CA"
}
},
"filter": {
"and": {
"filters":
[
{
"term": {
"doc.docType": "user"
}
}
]
}
}
}
}
}
后者虽然返回结果,但从长远来看是行不通的,因为我可能想为年龄,性别等添加一个额外的过滤器,而且我似乎无法添加多个字段。如果我删除位置过滤器,则第一个查询有效。
回答:
布尔过滤器使您可以将多个链在一起MUST
,SHOULD
并将多个SHOULD_NOT
请求合并在一起。允许您将其构造为一个查询。
以上是 带有多个过滤器的ElasticSearch 的全部内容, 来源链接: utcz.com/qa/411410.html