【发布时间】:2012-12-23 11:14:43
【问题描述】:
此查询每次执行需要 200+ 毫秒:
{
"filter": {
"term": {
"id": "123456",
"_cache": true
}
}
}
但是这个在第一次查询后每次执行只需要2-3毫秒:
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"term": {
"id": "123456"
}
}
}
}
}
注意两个查询中的相同 ID 值。看起来第二个查询使用了第一个查询的缓存结果。但是为什么第一个查询不能使用缓存结果本身呢?从第一个查询中删除 "_cache" : true 不会改变任何内容。
当我使用其他 ID 执行第二个查询时,第一次执行大约需要 40 毫秒,之后每次执行大约需要 2-3 毫秒。所以第二个查询不仅运行速度更快,而且还缓存了结果,并将缓存用于后续调用。
这一切都有解释吗?
【问题讨论】:
标签: performance caching elasticsearch