问题描述
我试图理解为什么下面的Elasticsearch查询不起作用。
编辑:
查询中提到的字段来自不同的索引。例如,过滤器的分类字段与查询字符串中提到的字段的索引不同。
过滤器查询的期望是,当用户专门在分类字段(即秘密或受保护的)上进行搜索时,将显示这些值。否则,如果用户从其他索引中搜索任何其他字段,例如名字或人,则不应考虑应用了任何过滤器,因为名字或人不属于该过滤器
{
"query": {
"bool": {
"filter": {
"terms": {
"classification": [
"secret","protected"
]
}
},"must": {
"query_string": {
"query": "*john*","fields": [
"classification","firstname","releasability","person"
]
}
}
}
}
}
返回的预期结果是现场人员中的john。当上面的代码中未应用任何过滤器时,此方法有效
{
"query": {
"query_string": {
"query": "*john*","person"
]
}
}
}
过滤器的目的仅是当所述字段包含提到的值时过滤记录,否则它应适用于所有值。
为什么不生成john的结果,而仅生成分类值的结果?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)