Elasticsearch query和filter的区别
elasticsearch 区别 filter Query
2023-09-14 09:02:30 时间
1、关于Query context和filter context
查询语句的表现行为取决于使用了查询上下文方式还是过滤上下文方式。
- Query context:查询上下文,回答了“文档是如何被查询语句匹配的”,此外,也决定了文档是否被匹配上,查询语句也通过计算_score的值来说明文档的匹配度。query context查询方式是通过传递query参数来实现。
- Filter context:过滤上下文,回答了“文档是不是匹配?”,答案一般都是简单的是和否,并不计算_scores的值,过滤上下文查询方式大多用于过滤结构化数据,例如:
- 时间戳(timestamp)是否在2015到2016之间?
- 状态(status)是否是(确切)“published”?
- 过滤上下文通过在bool查询中传递filter或must_not参与来起作用,或者在constant_score查询,或在filter聚合中起作用。
- 例如:
GET /_search { "query": { #query参数说明是query上下文 "bool": { #bool和两个match子句在query上下文中,意味着他们使用score来计算如何与文档匹配。 "must": [ { "match": { "title": "Search" }}, { "match": { "content": "Elasticsearch" }} ], "filter": [ #filter参数说明是filter上下文 { "term": { "status": "published" }}, # term和range应用于filter上下文,它们将过滤不匹配的文档,但不会影响匹配文档的score值。 { "range": { "publish_date": { "gte": "2015-01-01" }}} ] } } }
tip:所以,在需要用score来匹配文档的情况下使用query context,其他情况使用filter context。
相关文章
- ElasticSearch 集群
- elasticsearch-exporter部署
- ElasticSearch教程_Elasticsearch原理
- 【愚公系列】2022年12月 Elasticsearch数据库-.NET CORE的Serilog=>Rabbitmq=>Logstash=>Elasticsearch的日志传输(四)
- SpringDataElasticsearch操作Elasticsearch创建索引库以及创建映射
- 由 Elasticsearch 空间换时间的线上问题说开去......
- ElasticSearch 冲突问题处理
- ElasticSearch 多框架集成
- ES(ElasticSearch)数据建模最佳实践之「一对多对多关系建模」
- 【ES三周年】让搜索更高效:腾讯云和Elasticsearch的完美结合
- Elasticsearch 8集群搭建、安全功能配置详述
- 【ES三周年】吊打ElasticSearch和Kibana(入门保姆级教程-2)
- 【ES三周年】elasticsearch 认知
- 【ES三周年】GPT引领学习之旅:一篇让程序员轻松掌握Elasticsearch的攻略
- ElasticSearch(六) Elasticsearch在Thinkphp5.0中的使用详解程序员
- 如何在 Linux 上安装 Elasticsearch 和 Kibana
- 硬核观察 #357 ElasticSearch 继续对抗亚马逊 AWS 的开源分叉