Y a-t-il un meilleur moyen d'élasquersarch (autre que d'émettre une correspondance de toutes les requêtes et de la moyenne manuelle sur la longueur de tous les documents retournés) pour obtenir la longueur moyenne du document pour un index spécifique? P>
4 Réponses :
tiré dans le noir, mais les facettes ou les agrégations combinées à un script peuvent le faire.
{ ..., "aggs" : { "avg_length" : { "avg" : { "script" : "doc['_all'].length" } } } }
Ceci échoue en fait avec +org.elasticsicsearch.index.search.nesté.nonnectestedocsfilter@6 2d17f59))], à partir de [0], S ize [10]: La requête a échoué [Impossible d'exécuter la requête principale]]; Nethed: GroovyscriptExCueLueException [MissingPropertyException [EXCEPROPERTYEXCEPTION [EXCEPROPERTYEX EVALUATION DE LA PROPRIÉTÉE 'DE LA PROPRIÉTÉE' POUR ORG.LASTICSEARCH.INDEX.FIEDDATA.ScriptDocValues $ Cordes, Raison: Groovy.lang.MissingPropertyException: Non Telle propriété: Longueur pour la classe: Java.lang.string]] ; "
essayez doc ['_ tout']. valeurs.size () ()
Tout d'abord, le champ _all n'est pas toujours présent, car cela dépend du modèle d'index. Deuxièmement, de cette manière, vous obtenez le Le champ _all est un champ de prise spécial - tout ce qui concaté les valeurs de tous les autres champs en une grosse chaîne, en utilisant l'espace comme un délimiteur, [...] < / Code> Selon ELASTIC.CO/GUIDE / fr / élastiquearch / référence / actuel / ... et il est obsolète en 6.x
J'aime ça mieux que ma réponse :)
Si vous souhaitez obtenir une taille de documents, vous devez instruire ES de stocker la taille de chaque document: elastic.co/guide/fr/elasticsearch/reference/1.4/...
Sauf si vous utilisez Elasticsearch 2.0 ou plus, cette fonctionnalité n'est plus prise en charge.
Sur les versions récentes de Elasticsearch Code> Vous avez besoin d'installer plugin elastic.co/guide/fr/elasticsearch/plugins/currente/... ( github.com/elastic/elasticsearch/issues/804 )
J'ai utilisé ce code (j'ai le _Source activé) Eh bien, les caractères ..Si la chaîne sont UTF-8 pour obtenir les octets: p> < Pré> xxx pré> p>
Malheureusement, il ne fonctionne que avec groovy code> langage de script qui est absent maintenant par défaut. Dans
params._source.tostring () code>, vous venez de recevoir quelque chose comme
org.elasticsearch.search.lookup.sourcelookup@72e72146 code>
in Elasticsearch 6.2 Vous devez simplement utiliser la ligne suivante (pas besoin d'ajouter des «termes»): Voir les détails ici: