Apache Elasticsearch查询上下文与筛选器上下文
我对ElasticSearchQueryDSL的查询上下文和过滤器上下文有点困惑。我有以下两个问题。两个查询返回相同的结果,第一个查询评估分数,第二个查询不评估分数。哪一个更合适 第一个问题:-Apache Elasticsearch查询上下文与筛选器上下文,apache,
elasticsearch,lucene,Apache,
elasticsearch,Lucene,我对ElasticSearchQueryDSL的查询上下文和过滤器上下文有点困惑。我有以下两个问题。两个查询返回相同的结果,第一个查询评估分数,第二个查询不评估分数。哪一个更合适 第一个问题:- curl -XGET 'localhost:9200/xxx/yyy/_search?pretty' -d' { "query": { "bool": { "must": { "terms": { "mcc" : ["5045","5499"]}
curl -XGET 'localhost:9200/xxx/yyy/_search?pretty' -d'
{
"query": {
"bool": {
"must": {
"terms": { "mcc" : ["5045","5499"]}
},
"must_not":{
"term":{"maximum_flag":false}
},
"filter": {
"geo_distance": {
"distance": "500",
"location": "40.959334, 29.082142"
}
}
}
}
}'
第二个问题:-
curl -XGET 'localhost:9200/xxx/yyy/_search?pretty' -d'
{
"query": {
"bool" : {
"filter": [
{"term":{"maximum_flag":true}},
{"terms": { "mcc" : ["5045","5499"]}}
],
"filter": {
"geo_distance": {
"distance": "500",
"location": "40.959334, 29.082142"
}
}
}
}
}'
谢谢,在官方指南中,您有一个很好的解释: 查询上下文 查询上下文中使用的查询子句回答了“此文档与此查询子句的匹配程度如何?”的问题。除了确定文档是否匹配外,查询子句还计算表示文档与其他文档匹配程度的_分数 只要将查询子句传递给查询参数(例如搜索API中的查询参数),查询上下文就会生效 筛选上下文 在筛选上下文中,查询子句回答问题“此文档是否与此查询子句匹配?”答案是简单的“是”或“否” — 不计算分数。筛选器上下文主要用于筛选结构化数据,例如 该时间戳是否属于2015年至2016年的范围? 状态字段是否设置为“已发布”? 经常使用的过滤器将由Elasticsearch自动缓存,以提高性能 每当将查询子句传递给筛选器参数(例如布尔查询中的筛选器或must\u not参数、常量\u score查询中的筛选器参数或筛选器聚合)时,筛选器上下文都有效 关于您的情况,我们需要更多信息,但考虑到您正在寻找准确的值,过滤器将更适合您。这可能会有所帮助!