【发布时间】:2013-07-26 19:35:30
【问题描述】:
我正在尝试创建一些报告过滤器,用户可以在其中使用报告上的任何字段搜索配置文件。例如:搜索任何以ann 开头的firstname 和以vi 开头的grade 等的个人资料。
这是我目前写的一个查询:
{
from: 20,
size: 20,
query: {
filtered: {
query: {
match_all: [ ]
},
filter: {
bool: {
must: [
{
prefix: {
firstname: "ann"
}
},
{
prefix: {
grade: "vi"
}
}
]
}
}
}
},
sort: {
grade: {
order: "asc"
}
}
}
如果我删除must 的一个孩子(在bool 过滤器中),它会起作用。但是,一旦我使用多个过滤器,它就不会返回任何结果,并且我需要能够在其中使用任意数量的条目。
另外,如果我使用should 而不是must,它可以工作。我不确定我是否误解了逻辑,但据我了解(在这种情况下)must 应该只返回以firstname 开头的结果,ann 和grade 以vi 开头。
它们确实存在,但是这个查询没有找到它们。
我在这里遗漏了什么吗?
谢谢
【问题讨论】:
-
查询看起来很好,您对它应该如何工作的理解是正确的。因此,这可能与您的映射或字段名有关,或者您认为设置正确但未正确设置的其他内容。尝试使用示例文档和查询创建一个中断的最小示例。一个空索引和两个 curl 命令应该可以确认您的查询没有问题。
标签: php elasticsearch