Как передать эластичный поиск массового удаления в Python3? - PullRequest
0 голосов
/ 18 декабря 2018

Я написал фрагмент кода, который будет массово удалять идентификаторы es.Я написал то же самое в try except:

with open(delete_patch_destination) as delete_json_file:
            for line in delete_json_file:
                line_content = json.loads(line)
                for es_key in line_content.keys():
                    es_key = ast.literal_eval(es_key).decode()
                    es_indices_to_be_deleted.append(
                        {
                            '_op_type': 'delete',
                            '_index': self.index_name,
                            '_type': "latest",
                            "_id": es_key
                        }
                    )
                    if len(es_indices_to_be_deleted) >= 500:
                        try:
                            helpers.bulk(self.es, es_indices_to_be_deleted)
                            del es_indices_to_be_deleted[:]
                        except exceptions.NotFoundError:
                            pass
            if len(es_indices_to_be_deleted) > 0:
                try:
                    helpers.bulk(self.es, es_indices_to_be_deleted)
                    del es_indices_to_be_deleted[:]
                except exceptions.NotFoundError:
                    pass

Ошибка для того же, хотя Not found error и это:

py3.5.egg/pallet/tasks/datatable.py", line 244, in delete_from_es
        helpers.bulk(self.es, es_indices_to_be_deleted)
      File "/usr/local/lib/python3.5/dist-packages/elasticsearch/helpers/__init__.py", line 257, in bulk
        for ok, item in streaming_bulk(client, actions, **kwargs):
      File "/usr/local/lib/python3.5/dist-packages/elasticsearch/helpers/__init__.py", line 192, in streaming_bulk
        raise_on_error, **kwargs)
      File "/usr/local/lib/python3.5/dist-packages/elasticsearch/helpers/__init__.py", line 137, in _process_bulk_chunk
        raise BulkIndexError('%i document(s) failed to index.' % len(errors), errors)
    elasticsearch.helpers.BulkIndexError: ('500 document(s) failed to index.', [{'delete': {'_index': 'f0e7d61886945c3b7cfcd894e9f552d0', 'status': 404, '_type': 'latest', '_id': 'f52193c6535e6417b0b51d74a6ca3f22', '_shards': {'total': 2, 'successful': 1, 'failed': 0}, '_version': 1, 'found': False}},

Должен ли я, кроме возникшей ошибки или чтоеще для этого массового удаления на работу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...