1.概述
在ES里,QueryCacheingPolicy
的默认实现是UsageTrackingQueryCachingPolicy
。该Policy的基本思路是根据使用频率决定是否缓存。对于构建成本较高的索引,比如MultiTermQuery,MultiTermQueryConstantScoreWrapper,TermInSetQuery,PointQuery
最近使用超过2次(维护了一个256大小的环状使用历史记录)则会被索引。而且其他的一些query则需要5次。
同时,UsageTrackingQueryCachingPolicy
还维护了一个不使用cache的Query列表,比如TermQuery,MatchAllDocsQuery,MatchNoDocsQuery
,以及子query为空的BooleanQuery
,DisjunctionMaxQuery
。