Activation du query cache


(Blured Derulb) #1

Bonjour,

Sur une 1.7, je cherche à vérifier que le query cache est bien activé. Pour celà je regarde via cette url http://localhost:9200/_nodes/stats/indices/query_cache?pretty&human que les "query_cache" bougent :

    {
      "memory_size" : "0b",
      "memory_size_in_bytes" : 0,
      "evictions" : 0,
      "hit_count" : 0,
      "miss_count" : 0
    }

La requête que j'utilise pour mon test (elle est débile mais c'est une requête pour essayer de vérifier que le cache est utilisé) est :

{
  "query": {
    "filtered": {
      "query": {
        "multi_match": {
          "query": "hotel",
          "fields": [
            "text"
          ]
        }
      },
      "filter": {
        "term": {
          "text": "hotel"
        }
      }
    }
  }
}

Or les chiffres que j'observent restent tous à 0.

Je ne comprends pas, soit je regarde les mauvais indicateurs, soit la requête telle qu'elle n'est pas cachée, soit il ma manque un élément dans ma conf.

Qu'en pensez vous ?

Merci d'avance,
Blured.


(David Pilato) #2

Regarde plutôt du côté de GET _nodes/stats/indices/filter_cache

Seul le filtre est caché (tout ce qui n'est pas full text search en fait).


(Blured Derulb) #3

Merci.
Et savez-vosu comment est il possible de connaitre les hit et miss de cache ?

Les indicateurs disponibles via cette url : http://localhost:9200/_nodes/stats/indices/query_cache?pretty&human

devraient remplis via quels types de requêtes ?

Blured.


(David Pilato) #4

Je pense que c'est ça https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-request-cache.html

Non actif par défaut.


(Blured Derulb) #5

Même en passant les index.requests.cache.enable à true, il y a toujours 0 hits des caches. Idem si je regarde dans Marvel.

curl -XPUT localhost:9200/my_index/_settings -d'
{ "index.requests.cache.enable": true }
'

Je relance plein de fois mes query mais tout est à 0.

Vraiement bizarre.


(David Pilato) #6

Mouais.

Entre nous pourquoi tu veux activer ça ?


(Blured Derulb) #7

ba pour avoir le maximum de vitesse possible en terme de temps de réponse. Je plafonne à 3600 requêtes Elastic par secondes pour 5 noeud. C'est déjà beaucoup mais dans mon archi j'ai 1 requête http (= 1 recherche) qui génère une 20 aines de requêtes ELS unitaires. Je les déclenche via une multiSearchQuery. Je suis en train d'expérimenter dans quelle mesure des caches pourraient être activable pour permettre de gagner encore plus (si c'est possible).


(David Pilato) #8

Peut-être qu'il vaudrait mieux d'abord optimiser les requêtes avant de penser à changer des settings ? :smiley:

En général, au niveau cache, les fichiers Lucene sont mis en cache OS. Donc, reste le coût de "calcul" à assumer vs. avoir ça en cache.

Quelle version de ES / JVM as-tu ?


(Blured Derulb) #9

Je suis en ES 1.7 sur du FreeBsd 10.2-RELEASE-p7 avec de l'OpenJDK 1.7
(
openjdk version "1.7.0_80"
OpenJDK Runtime Environment (build 1.7.0_80-b15)
OpenJDK 64-Bit Server VM (build 24.80-b11, mixed mode)
)


(David Pilato) #10

Déjà, upgrade Java 8 Oracle et regarde la différence. Je pense que tu devrais avoir quelques gains.

Ensuite passer en version 2 d'elasticsearch aidera. Avec sa gestion du cache automatique, ça devrait beaucoup aider à améliorer les choses...


(system) #11