当我尝试运行此查询时,elasticsearch没有回答,并且发生了大量的缓存驱逐(与字段缓存相关)。
我不想在此查询中缓存任何字段,因为这是一个我每天只运行一次的分析查询。有没有办法在不使用字段缓存的情况下获取此aggs。我尝试过doc值,但需要45秒或更长时间。期待您的建议。
HEAP内存:30GB
ES版本1.3.1
指数大小:350 GB
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"type": "161"
}
},
{
"term": {
"cat": "Math"
}
}
]
}
}
}
},
"aggs": {
"tepo": {
"terms": {
"field": "tepo"
}
}
}
}
答案 0 :(得分:0)
您需要使用doc值或字段数据缓存,否则不会发生聚合。由于此查询不是很频繁,因此建议为该查询禁用过滤器缓存。
"filter" : {
"term" : {
"cath" : "Math",
"_cache" : false
}
}
这样就不会生成过滤器位集缓存,您可以在其上保存一些内存。 链接 - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-filter.html#_caching_18
另一种方法是限制主内存中的字段数据缓存量,这样就可以确保字段数据缓存不会超过主内存 链接 - http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_limiting_memory_usage.html