2016-02-27 45 views
1

我正在使用AWS Elasticsearch,並且集羣每秒接收約600個搜索查詢。這導致Elasticsearch的503服務不可用響應週期性爆發。作爲,因此我想打開緩存查詢索引(驗證它實際上是通過觀察<ES_DOMAIN>/<INDEX_NAME>AWS Elasticsearch - 查詢緩存

但是打開,當我檢查在<ES_DOMAIN>/_stats/query_cache?pretty&human查詢緩存的統計,這是我所得到的

"<index_name>" : { 
     "primaries" : { 
     "query_cache" : { 
      "memory_size" : "0b", 
      "memory_size_in_bytes" : 0, 
      "evictions" : 0, 
      "hit_count" : 0, 
      "miss_count" : 0 
     } 
     }, 
     "total" : { 
     "query_cache" : { 
      "memory_size" : "0b", 
      "memory_size_in_bytes" : 0, 
      "evictions" : 0, 
      "hit_count" : 0, 
      "miss_count" : 0 
     } 
     } 
    } 

基於我reading和類似的經歷我如何能打開緩存有什麼建議?

+1

你可以顯示你正在運行的查詢類型嗎?值得注意的是,只有過濾器上下文中的查詢纔會被緩存,而不是普通的查詢。 – Val

+0

您可以嘗試爲每個請求指定url緩存參數並比較結果:&query_cache = true – antonbormotov

+0

您能否確定該查詢是否以相同方式序列化? Elasticsearch使用整個json主體作爲緩存鍵。 – antonbormotov

回答

2

(即使是在指數映射設置index.cache.query.enable: true後),我只能猜測,AWS已禁用查詢緩存。大概到在012中設置

UPDATE

離開了一段時間運行羣集,並做一些沉重的聚集,我看到的是,query_cache開始習慣後,雖然不知道爲什麼,我沒有看到任何cache hits

GET _nodes/stats/indices/query_cache?pretty&human

{ 
    "cluster_name": "XXXXXXXXXXXX:xxxxxxxxxxx", 
    "nodes": { 
     "q59YfHDdRQupousO9vh6KQ": { 
     "timestamp": 1465589579698, 
     "name": "Mongoose", 
     "indices": { 
      "query_cache": { 
       "memory_size": "37.2kb", 
       "memory_size_in_bytes": 38151, 
       "evictions": 0, 
       "hit_count": 0, 
       "miss_count": 45 
      } 
     } 
     }, 
     "K3olMnkkRZW53tTw05UVhA": { 
     "timestamp": 1465589579692, 
     "name": "Meggan Braddock", 
     "indices": { 
      "query_cache": { 
       "memory_size": "47.3kb", 
       "memory_size_in_bytes": 48497, 
       "evictions": 0, 
       "hit_count": 0, 
       "miss_count": 53 
      } 
     } 
     } 
    } 
}