我一直在尝试查找与查询'abc'相匹配的条目,并从multi_match返回的所有那些条目中,我需要根据包含给定business_id的条目(其中business_id是字段之一)的条目来过滤条目。
我尝试使用以下查询,但是即使有一条记录同时满足must和filter查询,也没有从搜索返回任何记录。 问题出在过滤器查询中,因为当我评论它时,它根据需要获得了multi_match返回的2条记录,现在我想根据business_id过滤这些记录,因此最终应该只获得一条记录,但过滤器查询不起作用。
GET customer/_search
{
"query": {
"bool": {
"must": {
"dis_max": {
"queries":
{
"multi_match": {
"query": "abc",
"type": "phrase_prefix",
"fields": ["first_name", "last_name", "email", "city", "state", "zip", "country"]
}
}
}
},
"filter": {
"term": {
"business_id": business_id
}
}
}
}
}
答案 0 :(得分:0)
为了调试此问题,我建议您仅在查询中的must
部分进行搜索,以确保获得所需的结果,然后仅对{{1} }部分。
您希望看到的是,在这两个查询上都将获得期望的文档。我相信其中之一不应该返回您期望的文档,然后您可以尝试了解原因(并在需要时更新问题)。
如果filter
和must
都返回了您期望的文档,则上述查询应该可以正常工作。另外,如果那行不通,请添加您希望收到的文档
答案 1 :(得分:0)
GET customer/_search
{
"query": {
"bool": {
"must": {
"dis_max": {
"queries":
{
"multi_match": {
"query": "abc",
"type": "phrase_prefix",
"fields": ["first_name", "last_name", "email", "city", "state", "zip", "country"]
}
}
}
},
"filter": {
"match": {
"business_id": business_id
}
}
}
}
}
我的问题的解决方案。现在,过滤查询工作正常,因为我已将term
替换为match
。