Я использую elasticsearch 6.4
вместе с python3. Я обрабатываю изображения, и один из выходных данных является массивом NumPy. Я пытаюсь индексировать массив NumPy вместе с другими полями данных из анализа изображений в эластичный поиск. У меня есть три поля:
- ImageName
- 1007 * Отметка времени *
- массив numpy.
Они выглядят следующим образом:
imagename: 123def321_1548492175.jpg
time_stamp: 1548492175 [
encod:
array([ -1.42405510e-01, 8.58794246e-03, 4.45950478e-02,
-1.81895699e-02, -5.53448014e-02, -1.73689388e-02,
-4.21237871e-02, -8.25227201e-02, 1.56264022e-01,
-3.99713218e-02, 1.60366639e-01, 4.53100577e-02,
-2.09424138e-01, -5.07910103e-02, -4.65360470e-04,
8.38596523e-02, -1.19933985e-01, -1.71518624e-01,
-1.26374453e-01 ])]
Фактическая длина массива намного больше. Когда я получаю свой индекс, он определяется следующим образом:
{
"g6jy834005er" : {
"aliases" : { },
"mappings" : {
"images" : {
"dynamic" : "false",
"properties" : {
"encod" : {
"type" : "nested"
},
"imagename" : {
"type" : "text"
},
"time_stamp" : {
"type" : "integer"
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1548499595840",
"number_of_shards" : "1",
"number_of_replicas" : "0",
"uuid" : "OP-qab-XRfGQ_oZZEvTClw",
"version" : {
"created" : "6050499"
},
"provided_name" : "g6jy834005er"
}
}
}
}
В моем коде Python я использую следующее для индексации значений:
doc = {'imagename': name, 'time_stamp': tm,'encod':fenc}
es.index(index=indx, doc_type="images", body=doc)
Я получаю следующую ошибку:
elasticsearch.exceptions.SerializationError: ({'imagename': '123def321_1548492174.jpg', 'time_stamp': '1548492174', 'encod': [array([-0.16764426, 0.01966568, 0.04131121, -0.01985365, -0.07606418,....
TypeError("Unable to serialize array([-0.16764426, 0.01966568, 0.04131121, -0.01985365,.....(type: <class 'numpy.ndarray'>)",))
За последние 2 недели я пользуюсьasticsearch только ... может кто-нибудь помочь? Я попытался изменить тип данных поля кодирования на long
, nested
, object
, text
и т. Д. Но ничего не помогло.