我对 ElasticSearch Query DSL 的查询上下文和过滤器上下文有点困惑。我有以下 2 个疑问。两个查询返回相同的结果,第一个查询评估分数,第二个查询不评估分数。哪一个更合适?
第一个查询:-
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"
}
}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
第二个查询:-
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"
}
}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
谢谢,
我计划Terms Query在我的所有查询中使用包含许多术语(视情况而定,最多 40-50k 术语)的 a 。
这些术语将使用此处解释的查找从另一个索引中获取。Elasticsearch 在内部使用它们,所以至少它们不会通过网络,但是查询本身看起来很重。
我想知道查询性能是否会很好。无论如何,我计划进行压力测试,但不确定这是否会顺利升级。有人对这类查询有经验,或者知道 Elasticsearch 如何在内部处理它们?
谢谢!