我对Elasticsearch很陌生,而且我对must和filter之间的区别感到困惑。我想在我的术语中执行一个and操作,所以我这样做了:
POST /xyz/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"city": "city1"
}
},
{
"term": {
"saleType": "sale_type1"
}
}
]
}
}
}
使用这样的过滤器,我得到了符合两个条件的所需结果
POST /xyz/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"city": "city1"
}
}
],
"filter": {
"term": {
"saleType": "sale_type1"
}
}
}
}
}
我得到了相同的结果,那么何时应该使用must,何时应该使用filter?有什么区别?
filter
能够更快地进行搜索,因为不需要计算分数或排序。当您关心搜索词的出现次数、匹配文档的长度或者想要在查询中添加boost
来提高匹配文档的排名时,评分就变得重要了。 - Cardin