2017-08-24 2 views
1

Je veux obtenir le résultat de l'agrégation en tant que jour de la semaine au format texte comme lundi, mardi etc. J'ai l'agrégation suivante dans laquelle j'obtiens le résultat comme le jour de la semaine, mais en format numérique comme 1 pour lundi, 2 pour mardi, etc.elasticsearch - obtenir le jour de la semaine au format texte comme lundi, mardi etc

"aggs": { 
    "perWeekDay": { 
     "terms": { 
      "script": "doc['order_datetime'].date.dayOfWeek" 
     } 
    } 
} 

Mise à jour: Je suis en train de faire ce script en utilisant parce que je veux ajouter le champ personnalisé dans Kibana où je dois mentionner ce script.

+0

vous pourriez avoir un simple mappage sur le côté client pour mapper des numéros aux noms de jour, non? – Val

+0

Oui, mais j'essaie de trouver est-il moyen dans elasticsearch comme doc ['timestamp']. Date.dayOfWeek(). GetAsText() J'ai vu cela dans les réponses (https://stackoverflow.com/a/31852124/6582942), existe-t-il un moyen de l'obtenir dans une version plus récente, car cela ne fonctionne pas. – pravindot17

+0

Vous pouvez toujours essayer de formater votre date avec le modèle 'EEE' pour obtenir le jour de trois lettres correspondant. – Val

Répondre

0

Résolu la même chose en faisant un travail de script en utilisant des conditions.

"aggs": { 
    "perWeekDay": { 
     "terms": { 
      "script": "(doc['order_datetime'].date.dayOfWeek == 1 ? 'Monday' : (doc['order_datetime'].date.dayOfWeek == 2 ? 'Tuesday' : ((doc['order_datetime'].date.dayOfWeek == 3 ? 'Wednesday' : ((doc['order_datetime'].date.dayOfWeek == 4 ? 'Thursday' : ((doc['order_datetime'].date.dayOfWeek == 5 ? 'Friday' : ((doc['order_datetime'].date.dayOfWeek == 6 ? 'Saturday' : 'Sunday'))))))))))" 
     } 
    } 
}