query和filter
时间: 2023-08-10 10:07:40 浏览: 53
filter和query都是Elasticsearch中的搜索操作,但是它们的用途不同。
filter主要用于过滤数据,可以用于过滤特定范围内的数据(例如时间范围、数字范围),或者匹配某些特定的条件(例如匹配某些特定的字段值或者模式)。filter操作对搜索性能有很好的优化,因为它们不会计算文档的得分。
query主要用于匹配数据,可以用于匹配特定的查询条件,例如全文搜索或者模糊搜索。query操作针对的是文档的字段值,而不是文档的得分。query操作默认会计算文档的得分并排序,所以对性能会有一定的影响。
相关问题
es中filter和query的区别
filter和query都是Elasticsearch中的搜索操作,但是它们的用途不同。
filter主要用于过滤数据,可以用于过滤特定范围内的数据(例如时间范围、数字范围),或者匹配某些特定的条件(例如匹配某些特定的字段值或者模式)。filter操作对搜索性能有很好的优化,因为它们不会计算文档的得分。
query主要用于匹配数据,可以用于匹配特定的查询条件,例如全文搜索或者模糊搜索。query操作针对的是文档的字段值,而不是文档的得分。query操作默认会计算文档的得分并排序,所以对性能会有一定的影响。
FILTER_BOOL_QUERY
FILTER_BOOL_QUERY 是一个 Elasticsearch 中的查询语句,它可以用来组合多个查询条件,实现更加精确的查询。具体来说,它可以将多个查询条件组合成一个布尔表达式,并指定每个条件的逻辑关系(与、或、非)。
例如,我们可以使用 FILTER_BOOL_QUERY 查询来查找所有年龄在 18 到 30 岁之间、且工作地点在北京或上海、且薪资大于等于 10000 的员工。具体的查询语句如下:
```
{
"query": {
"bool": {
"filter": [
{ "range": { "age": { "gte": 18, "lte": 30 } } },
{ "terms": { "city": ["北京", "上海"] } },
{ "range": { "salary": { "gte": 10000 } } }
]
}
}
}
```
在这个查询语句中,我们使用了三个过滤条件,分别是:
- range 查询:用于查询数值型字段的范围。
- terms 查询:用于查询某个字段是否包含指定的值。
- bool 查询:用于组合多个查询条件,并指定它们之间的逻辑关系。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)