【发布时间】:2017-06-06 04:15:42
【问题描述】:
我有以下带有术语查找过滤器聚合的弹性搜索查询。两个查询都会给出相同的结果。两个查询具有相同的过滤器类型,只是terms-lookup-filter 的顺序(位置)不同。
1.这里的术语查找过滤器位于 和 过滤器聚合的第二个/最后一个位置。
{
"size": 0,
"aggs": {
"filterAggs": {
"filter": {
"and": {
"filters": [
{
"range": {
"eligibleDates": {
"include_lower": true,
"include_upper": true,
"from": <fromDate>,
"to": <toDate>
}
}
},
{
"terms": {
"rollNo": {
"path": "student.rollNo",
"index": "<index_name>",
"id": "<record_id>",
"type": "<es Type>"
}
}
}
]
}
}
}
}
}
2.这里的terms-lookup过滤器在和过滤器聚合的第一个位置。
{
"size": 0,
"aggs": {
"filterAggs": {
"filter": {
"and": {
"filters": [
{
"terms": {
"rollNo": {
"path": "student.rollNo",
"index": "<index_name>",
"id": "<record_id>",
"type": "<es Type>"
}
}
},
{
"range": {
"eligibleDates": {
"include_lower": true,
"include_upper": true,
"from": <fromDate>,
"to": <toDate>
}
}
}
]
}
}
}
}
}
在我的实验/测试中,第一个查询比第二个查询执行效率更高(快 7 到 10 倍)。 现在我的问题是,弹性搜索查询中的术语查找过滤器聚合顺序会影响执行时间(效率)吗?过滤器放置顺序将如何影响执行时间?
【问题讨论】:
标签: elasticsearch