У меня странная проблема.Если я использую curl с полезной нагрузкой, которую я отправляю в Elasticsearch, у меня нет проблем.Когда я пытаюсь передать JSON вastic через веб-сервис с использованием Python, я получаю, в зависимости от того, как я установил полезную нагрузку
- TypeError: unhashable type: 'dict'
- asticsearch.exceptions.RequestError: TransportError (400, 'action_request_validation_exception', 'Validation Failed: 1: отсутствует скрипт или документ;')
Чтобы помочь отладить это, я вынул код изапустил его, чтобы попытаться выяснить это.
Чтобы создать запись, я запускаю следующее.
edit_author1 = {"name": "Sheldon Sid", "myid": 18}
resp = es.index(index="radsearch", doc_type="default", id=18, body={"doc": edit_author1})
Это работает для первоначального создания записи при использовании es.create или es.index, и он возвращает следующее, как если бы я использовал curl из терминала.
{
"_index": "radsearch",
"_type": "default",
"_id": "18",
"_version": 1,
"found": true,
"_source": {
"doc": {
"name": "Sheldon Sid",
"myid": 18
}
}
}
Он работает как положено.Когда я пытаюсь запустить обновление, где у меня есть следующее
resp = es.update(index="radsearch", doc_type="default", id=18, body={'doc': edit_author1})
Вышеприведенное возвращает
{
"_index": "radsearch",
"_type": "default",
"_id": "18",
"_version": 2,
"found": true,
"_source": {
"doc": {
"name": "Sheldon Sid",
"myid": 18
**},
"myid": 18,
"name": "Sheldon Sid"
}**
}
Но документ повторяется как отдельная запись в doc.Если я запускаю его с помощью curl, он обновляет документ и не создает вторую запись, как указано выше.
Если я пытаюсь запустить create или update без ключа doc, я получаю TypeError: unhashable type: 'dict '
resp = es.update(index="radsearch", doc_type="default", id=18, body={edit_author1})
TypeError: unhashable type: 'dict'
Если я пытаюсь запустить обновление как
resp = es.update(index="radsearch", doc_type="default", id=18, body=edit_author1)
, я получаю
elasticsearch.exceptions.RequestError:
TransportError(400, 'action_request_validation_exception',
'Validation Failed: 1: script or doc is missing;')
Любые идеи о том, как это исправить, как яя застрял?
С уважением.