我正在尝试索引一个文档,该文档具有三个字段 first_name、last_name、“关键字”类型的职业,并且分别具有值 XYZ、ABC、DEF。
我已经使用过滤器编写了与 AND 条件完全匹配的查询,如下所示,
"query": {
"bool": {
"filter": [
{"term": {"first_name": "XYZ"}},
{"term": {"last_name": "ABC"}}
]
}
}
Run Code Online (Sandbox Code Playgroud)
这必须返回一个文档,但什么都不返回。
我对同一操作有另一个查询,
"query": {
"bool": {
"must": [
{"match": {"first_name": "XYZ"}},
{"match": {"last_name": "ABC"}}
]
}
}
Run Code Online (Sandbox Code Playgroud)
这将返回一个文档。
根据 Elasticsearch 文档,我了解查询和过滤器之间的区别在于过滤器不会对结果进行评分。我不确定为什么第一个查询不返回任何结果。我的理解正确吗?