2015-11-02 1 views
2

Im faisant une requête qui retourne comme 70k documents (j'ai besoin tous, et Im utilise actuellement scan & scroll)ElasticSearch supprimer des champs par défaut du corps de réponse de recherche

Ce qui se passe est que la réponse est très grande (2 MB et nous l'avons déjà réduit de 6 Mo). Nous avons déjà filtré les champs dont nous avions besoin, et comme la requête n'est appelée qu'à partir d'une API, nous avons réduit le nom des propriétés.

Ce que je peux voir est que tous les documents contenus dans le tableau « hits » a les champs par défaut suivants que je vraiment besoin d'eux:

  • _index (nous demandons seulement sur un indice)
  • _type (nous ne demandons que sur un seul type)
  • _id (nous avons alredy cela sur un champ)
  • _SCORE (nous ne marque pas)

Est-e avant un moyen de les retirer afin que je puisse avoir la structure suivante:

"hits" : [ 
{ 
    "_source": { 
     ... 
    } 
}, 
{ 
    "_source": { 
     ... 
    } 
} 

]

Merci d'avoir lu! J'apprécierai votre aide!

Répondre

8

Oui, vous pouvez utiliser response filtering et le paramètre filter_path, à condition d'utiliser ES 1.6 ou version ultérieure.

curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source' 

Vous pouvez même spécifier les champs juste que vous voulez les

curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source&_source=title,name' 
+0

Merci pour la réponse rapide! Travaillé comme un charme! –

+0

Génial, content que ça a marché! – Val

+0

Est-il possible de filtrer les champs hits. ** à l'aide de la requête de corps POST? –