node.js - 弹性搜索“过滤器”查询不起作用
问题描述
我一直在尝试找出与查询“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
}
}
}
}
}
解决方案
为了调试这个,我建议你只搜索must
查询中的部分,看看你得到了你期望的结果,然后只对filter
部分做同样的事情。
您希望看到的是,在这两个查询中,您都会得到您期望的文档。我相信其中一个不应返回您期望的文档,然后您可以尝试了解原因(并在需要时更新问题)。
如果两者都must
返回filter
您期望的文档,那么上述查询应该可以正常工作。此外,如果这不起作用,请添加您希望收到的文档
推荐阅读
- javascript - 在反应状态下删除数组的第一项
- scala - 是否可以从同一个 Scala 类的两个实例中传递值
- c# - 具有两个外键的实体框架关系
- ember.js - 如何在ember js中从子组件调用父组件方法
- javascript - 如何在此类中在运行时更改类的原型(使用 ES6 类)
- ios - 删除与锻炼相关的所有数据样本
- android - 我们可以从另一个 Fragment B 更改 Fragmet A 的 Linearlayout 的背景颜色吗?没有错误
- python - Keras(Tensorflow)如何计算。最后一层张量的形状?
- vue.js - 从列表中删除 vue 组件总是删除列表中的最后一个元素
- r - as.name 可以用于定位变量并修改其子元素吗?