Python Elasticsearch update_by_query не работает
Я хочу обновить несколько документов, используя update_by_query в elasticsearch.py (версия 7.13.1)
Мой запрос:
es_query = {
"query": {
"match": {"user_id.keyword": user_id}
# "bool": {
# "must": [{"term": {"user_id": {"value": user_id}}}]
# }
},
"script": {
"source": "ctx._source.user_level = params.user_level",
"params": {
"user_level": user_level
},
"lang": "painless"
}
}
result = es.update_by_query(index='articles', doc_type='_doc', body=es_query, wait_for_completion=True,
ignore=[400, 404], conflicts='proceed', refresh='true')
Я пробовал с совпадением, а также должен запросить, но документы не обновляются без такой ошибки.
Я получаю такой ответ:
{'took': 1, 'timed_out': False, 'total': 0, 'updated': 0, 'deleted': 0, 'batches': 0, 'version_conflicts': 0, 'noops': 0, 'retries': {'bulk': 0, 'search': 0}, 'throttled_millis': 0, 'requests_per_second': -1.0, 'throttled_until_millis': 0, 'failures': []}
Если я запускаю тот же запрос на Kibana, он работает должным образом. Что мне здесь не хватает?
1 ответ
Я получил его, позвонив в
requests.post()
Вызов API вместо использования
update_by_query()
.
Тогда код выглядит так:
url = os.environ['ES_HOST'] + "/articles/_update_by_query"
result = requests.post(url=url, json=es_query, headers={"content-type": "application/json"})