Elasticsearch查询过滤器组合问题

问题描述

我试图理解为什么下面的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 (将#修改为@)