Python-elasticsearch apı'sindeki fields parametresini, elasticsearch'ten @timestamp'ı ıso biçiminde ayrıştırmaya çalışan bazı verileri almak için bir pandalar veri çerçevesinde kullanmak üzere kullanıyorum.
fields = \
[{
"field": "@timestamp",
"format": "strict_date_optional_time"
}]
Varsayılan olarak elasticsearch, sonuçları doc'da görüldüğü gibi dizi listesi biçiminde döndürür:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-fields.html
The fields response always returns an array of values for each field, even when there is a single value in the _source.
Bu nedenle ortaya çıkan dataframe, geleneksel yöntemlerle bir datetime serisine ayrıştırılamayan bir nesne listesi serisi içerir.
Name: fields.@timestamp, Length: 18707, dtype: object
0 [2021-11-04T01:30:00.263Z]
1 [2021-11-04T01:30:00.385Z]
2 [2021-11-04T01:30:00.406Z]
3 [2021-11-04T01:30:00.996Z]
4 [2021-11-04T01:30:01.001Z]
...
8368 [2021-11-04T02:00:00.846Z]
8369 [2021-11-04T02:00:00.894Z]
8370 [2021-11-04T02:00:00.895Z]
8371 [2021-11-04T02:00:00.984Z]
8372 [2021-11-04T02:00:00.988Z]
Seriyi datetime serisine ayrıştırmaya çalışırken:
pd.to_datetime(["fields.@timestamp"])
Bu sonuç:
TypeError: <class 'list'> is not convertible to datetime
Kullanım durumum çok sayıda datetime formatı gerektiriyor ve fields parametresi birden çok formatı sorgulamak için çok uygun, ancak listelenen nesne datetime dizesi işleri zorlaştırıyor.