我是elasticsearch的新手,在must和filter之间感到困惑。我想在条款之间执行and操作,所以我这样做了
开机自检/ xyz / _search
{ "query": { "bool": { "must": [ { "term": { "city": "city1" } }, { "term": { "saleType": "sale_type1" } } ] } } }
这给了我所需的结果,既匹配了术语,又使用了像这样的过滤器
{ "query": { "bool": { "must": [ { "term": { "city": "city1" } } ], "filter": { "term": { "saleType": "sale_type1" } } } } }
我得到相同的结果,所以什么时候应该使用must以及什么时候应该使用filter?有什么区别?
must有助于得分。在中filter,查询的分数将被忽略。
must
filter
在must和中filter,子句(查询)必须出现在匹配的文档中。这就是获得相同结果的原因。
您可以检查此链接
得分 每个文档的相关性得分由正浮点数(称为)表示_score。越高_score,文档越相关。
得分
每个文档的相关性得分由正浮点数(称为)表示_score。越高_score,文档越相关。
_score
查询子句_score为每个文档生成一个。
要知道如何计算分数,请参考此链接