# Trier un champ String dans Kibana

**URL:** https://discuss.elastic.co/t/trier-un-champ-string-dans-kibana/209674
**Category:** Discussions en français
**Created:** [November 27, 2019, 11:59am UTC](https://discuss.elastic.co/t/trier-un-champ-string-dans-kibana/209674 "2019-11-27T11:59:41Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![rbeg](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rbeg/32/56818_2.png) [@rbeg](https://discuss.elastic.co/u/rbeg)
#### Post date: [November 27, 2019, 11:59am UTC](https://discuss.elastic.co/t/trier-un-champ-string-dans-kibana/209674/1 "2019-11-27T11:59:42Z")

</div>

Bonjour,

Est-il possible dans Kibana, onglet "Discover" de trier les résultats dans l'odre alphabétique d'un champ de type string ? Il n'y a pas la petite flèche pour tier à coté du nom du champ.  
Exemple : mes documents contiennent 3 champs, Nom, prénom, age. Je recherche toutes les personnes ayant l'age compris entre X et Y, et je veux trier par leur Nom.  
J'arrive à trier par age, car c'est un type Number, mais je n'arrive pas à trier par un champ de type Srtring.

Merci.

---

<div class="post-metadata">

### Author: ![Julien](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/julien/32/19688_2.png) [@Julien](https://discuss.elastic.co/u/Julien)
#### Post date: [November 27, 2019, 12:04pm UTC](https://discuss.elastic.co/t/trier-un-champ-string-dans-kibana/209674/2 "2019-11-27T12:04:48Z")

</div>

Bonjour,  
Si le champs est de type keyword et donc aggregatable dans l'index pattern, le sorting est possible.  
Sur un champs analysé (de type "text"), non ceci causerai des problemes de performance/memoire - voir [https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html#fielddata-disabled-text-fields](https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html#fielddata-disabled-text-fields)  
En d'autre mots, pour de l'aggregation sorting, il faut utiliser keyword qui ne semble pas etre le cas ici ?

Juste au cas ou Elasticsearch est en version 2.x, voir [https://www.elastic.co/blog/strings-are-dead-long-live-strings](https://www.elastic.co/blog/strings-are-dead-long-live-strings) (string analyzed est devenu text et string not\_analyzed est devenu keyword depuis 5.0)

---

<div class="post-metadata">

### Author: ![rbeg](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rbeg/32/56818_2.png) [@rbeg](https://discuss.elastic.co/u/rbeg)
#### Post date: [November 27, 2019, 12:26pm UTC](https://discuss.elastic.co/t/trier-un-champ-string-dans-kibana/209674/3 "2019-11-27T12:26:42Z")

</div>

Voici le mapping de mon champ :

```
     "Nom" : {
        "type" : "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
          }
        }
      }, 

```

J'utilise logstash pour faire le mapping.  
logstash récupère un champ text dans un .csv et applique un mapping par défaut sur ce champ.  
Dois-je faire un mutate { convert ... } sur ce champ pour pourvoir le trier dans Kibana?  
Un truc dans ce style (mais dans la doc de logstash je ne vois pas la possibilité de faire un convert vers un type keyword :

```
    mutate {
              convert => { "Nom" => "keyword" }
    }
```

---

<div class="post-metadata">

### Author: ![Julien](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/julien/32/19688_2.png) [@Julien](https://discuss.elastic.co/u/Julien)
#### Post date: [November 28, 2019, 4:56pm UTC](https://discuss.elastic.co/t/trier-un-champ-string-dans-kibana/209674/4 "2019-11-28T16:56:01Z")

</div>

Le champ "Nom" ici est de type text et il n'est pas aggregatable - voir [https://github.com/elastic/kibana/issues/7419](https://github.com/elastic/kibana/issues/7419)

Si le mapping est celui-ci, sorting fonctionnera dans Discover :

```auto
"Nom": {
        "type": "keyword",
        "ignore_above": 256
      }

```

Pour appliquer le mapping il faut utiliser un [template](https://www.elastic.co/guide/en/apm/server/current/configuration-template.html).

Utiliser le mapping par default avec [multi-field](https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html) text+keyword quand un string est détecté est généralement juste un point de depart pour créer le template (keyword est pour pouvoir faire du sorting/aggregation, text pour la recherche et il est possible de ne pas indexé si aucune des deux fonctionnalité est nécessaire pour le champs)

---

<div class="post-metadata">

### Author: ![rbeg](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rbeg/32/56818_2.png) [@rbeg](https://discuss.elastic.co/u/rbeg)
#### Post date: [November 28, 2019, 5:02pm UTC](https://discuss.elastic.co/t/trier-un-champ-string-dans-kibana/209674/5 "2019-11-28T17:02:11Z")

</div>

Merci Julien, c'est bien ça, merci.  
Je fait mon mapping automatiquement via logstash, j'ai l'impression qu'il ne me permet pas de mapper un type keyword : [https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-convert](https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-convert)  
Sinon il faudra que je fasse mon mapping sans passer par logstash.

---

<div class="post-metadata">

### Author: ![Julien](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/julien/32/19688_2.png) [@Julien](https://discuss.elastic.co/u/Julien)
#### Post date: [November 29, 2019, 3:50pm UTC](https://discuss.elastic.co/t/trier-un-champ-string-dans-kibana/209674/6 "2019-11-29T15:50:30Z")

</div>

logstash permet d'installer un index template avec le plugin output elasticsearch mais generalement il vaut mieux le faire hors de logstash (pour ne pas donner la permission manager\_template a l'utilisateur qui a juste besoin de pouvoir ecrire sur un index ou un alias)  
Donc s'il n'y a pas de template, en effet c'est bien elasticsearch qui choisit automatiquement le mapping. Si la donnée du premier document de l'index est un string, par default cela genere 2 champs "text" et "keyword", et Discover ne listera pas le champs "Nom.keyword" et donc ne permet pas de mettre en ordre par "Nom" car c'est un champs texte (comme discuter dans [https://github.com/elastic/kibana/issues/7419](https://github.com/elastic/kibana/issues/7419))

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [December 27, 2019, 3:50pm UTC](https://discuss.elastic.co/t/trier-un-champ-string-dans-kibana/209674/7 "2019-12-27T15:50:33Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
