Я пытаюсь обновить документ (путем добавления элементов в список) или создать, если он не существует. Например, я хочу, чтобы документ с id == Donald_Duck
добавил элементы списка suggestions
, если он уже не представлен.Использовать API Python для условного обновления документа ElasticSearch
name = 'Donald_Duck'
suggestions = ['Donald', 'Donald duck', 'Duck', 'Duck Avanger']
body = {
"script" : "ctx._source.text += new_suggetions",
"params" : { "new_suggestions" : suggestions},
"upsert" : suggestions
}
es.update(index=INDEX_NAME, doc_type='test', id=name, body=body)
К сожалению, я получаю RequestError
:
RequestError: TransportError(400, 'mapper_parsing_exception', 'failed to parse')
Это как мои отображения выглядит следующим образом:
mappings = {
"mappings": {
"test": {
"properties": {
"text": {
"type": "completion",
"analyzer" : "simple",
"search_analyzer" : "simple"
},
}
}
}
}
Как я могу это исправить? Если у меня есть несколько документов, могу ли я использовать тот же код с API bulk
?
Да, скрипты уже позволили, спасибо за проверку. – meto
Я думаю, вы имеете в виду «текст: предложения», правильно? – meto
да действительно, я его отредактировал –