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"})
Другие вопросы по тегам