【发布时间】:2019-12-17 17:56:03
【问题描述】:
我一直在尝试找出与查询“abc”匹配的条目,并且从 multi_match 返回的所有条目中,我需要根据包含给定 business_id 的条目过滤条目,其中 business_id 是字段之一。
我已尝试使用以下查询,但搜索未返回任何记录,即使有一条记录同时满足必须和过滤查询。 问题出在过滤器查询中,因为当我评论时它得到了 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
}
}
}
}
}
【问题讨论】:
-
我相信这也应该按照您的意愿工作。您是否尝试取消注释必须或过滤器部分以查看查询的哪一部分是您的问题?另外,您的索引看起来如何?例如,
phrase_prefix不适用于关键字。 -
您好,感谢您的调查。问题出在过滤器查询中,因为当我评论时它得到了 multi_match 根据需要返回的 2 条记录,现在我想根据 business_id 过滤这些记录,所以最终应该只得到一条记录,但过滤器查询不起作用。另外,尝试删除
phrase_prefix,但没有得到所需的结果 -
在不知道您的索引是什么样子的情况下很难提供更多信息。您能否提供映射的相关部分,或者您想要匹配的文档?
-
嘿,我已经添加了有问题的索引结构的图像。
标签: node.js reactjs elasticsearch