Próbowałem użyć agregacji histogramów daty w elastycznym wyszukiwaniu i zwraca datę jako epoka lub w formacie yy-mm-dd-mm-ss. Ale chcę uzyskać liczbę dokumentów w tygodniu, jak poniedziałek, wtorek itd. Czy jest jakiś sposób, w jaki mogę to zrobić?Jak wyświetlać nazwy dni, używając agregacji dat histogramów w elascticsearch
Odpowiedz
Musisz wybrać inne podejście. Za pomocą skryptów można konwertować datę na dzień tygodnia. W przypadku tej wartości, jeśli zastosujesz agregację terminów, powinna ona działać poprawnie.
Script przekonwertować wartość czasu daty w dzień powszedni
Date date = new Date(doc['created_at'].value) ;
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat('EEE');
format.format(date)
Query do uzyskania wartości
{
"aggs": {
"perWeekDay": {
"terms": {
"script": "Date date = new Date(doc['created_at'].value) ; java.text.SimpleDateFormat format = new java.text.SimpleDateFormat('EEE');format.format(date)"
}
}
}
}
Można również znaleźć więcej przykładów dotyczące używania skryptów w agregacji here.
Może czegoś brakuje, ale czy odpowiedź nie jest prostsza niż odpowiedź Vineeth?
"aggregations": {
"timeslice": {
"histogram": {
"script": "doc['timestamp'].date.getHourOfDay()",
"interval": 1,
"min_doc_count": 0,
"extended_bounds": {
"min": 0,
"max": 23
},
"order": {
"_key": "desc"
}
}
}
To miłe, jak to będzie również obejmować wszelkie godziny zero wyników, a to będzie rozszerzyć wyniki obejmować cały okres 24 godzin (ze względu na extended_bounds).
Możesz użyć 'getDayOfWeek', 'getHourOfDay', ... (więcej informacji znajdziesz w 'Czasie Joda').
To jest świetne przez wiele godzin, ale w przypadku dni/miesięcy będzie podawana liczba, a nie nazwa miesiąca. Aby obejść, możesz uzyskać szczelinę czasową jako ciąg - , ale, to nie będzie działać z podejściem rozszerzonych granic, więc możesz mieć puste wyniki (tj. [Pon, Wt, Pt, Słońce]).
W sprawie, chcesz tego, to jest tutaj:
"aggregations": {
"dayOfWeek": {
"terms": {
"script": "doc['timestamp'].date.dayOfWeek().getAsText()",
"order": {
"_term": "asc"
}
}
}
Nawet jeśli to nie pomoże, mam nadzieję, że ktoś inny będzie go znaleźć i korzystać z niego.
Dla ES5 stosując bezbolesne, to działa:
"aggs": {
"dayOfWeek": {
"terms": {
"script": {
"inline": "doc['date_utc'].date.dayOfWeek",
"lang": "painless"
}
}
}
}
cześć, czy możesz mi powiedzieć, jak możemy uzyskać dzień tygodnia w formacie tekstowym, np. W poniedziałek, wtorek itp. – pravindot17
- 1. Dodaj dni do dat w ramce danych
- 2. Serwer SQL: wybór wszystkich dni w zakresie dat, nawet jeśli dane nie istnieją przez kilka dni.
- 3. Jak wygenerować zakres dat w kdb z wyłączeniem dni weekendowych?
- 4. Jak odjąć kolumnę dni od kolumny dat w Pyspark?
- 5. Wiele histogramów w Pandach
- 6. Jak mogę uzyskać nazwy dni tygodnia w JodaTime
- 7. Zmieniając gregoriańskie nazwy dni i dni na islamskie? NSDate
- 8. Znajdź liczbę dni tygodnia/weekendów w danym zakresie dat
- 9. jak sprawdzić liczbę dni w miesiącu w mysql
- 10. Liczba dni przecinających się między dwoma zakresami dat
- 11. Dodaj dwa dni robocze do tablicy dat z wyłączeniem dat świątecznych
- 12. Porównywanie dat prowadnic; data większa lub równa dni temu
- 13. MySQL wybierz wszystkie dni w zakresie dat, nawet jeśli dane nie są dostępne w dniu
- 14. używając nazwy zmiennej w kolekcji lodash
- 15. Biblioteka javascript do tworzenia histogramów
- 16. Normalizowanie histogramów fasetowanych osobno w ggplot2
- 17. Jak uzyskać ten sam wykres bez pośredniego kroku agregacji kwoty?
- 18. Laravel (Carbon) wyświetla różnicę dat tylko w dniach
- 19. Jak wywołać funkcję, używając ciągu znaków nazwy funkcji w R?
- 20. Jak wyświetlać indeks tablicy po rozwinięciu tablicy za pomocą struktury agregacji MongoDB
- 21. Jak uzyskać tygodniowy lub 7 dni zakres dat w Crystal Report
- 22. Jak etykietować paski histogramów wartościami danych lub procentami w R
- 23. Tworzenie zakresu dat w Pythonie
- 24. Odejmowanie dat w JavaScript
- 25. Uzyskaj różnicę dat w VB.NET
- 26. Pierwsze dni od daty
- 27. Jak dodać dni robocze do NSDate tylko w dni robocze?
- 28. Redefiniowanie makro lateks używając tej samej nazwy
- 29. Zachowanie kwalifikowanej nazwy używając prywatnego dziedziczenia
- 30. Zabij proces używając nazwy wewnątrz linux (Python)
Ten pracował dla mnie, ale musiałem użyć tego formatu do skryptu: ' "skrypt".„Doc [ 'timestamp'] dacie. dayOfWeek "' Zauważ brakujący nawias. – Derek