Solución:
Dado que no está dando una identificación de documento mientras indexa su documento, debe obtener la identificación de documento generada automáticamente del valor de retorno y eliminarla de acuerdo con la identificación. O puede definir la identificación usted mismo, intente lo siguiente:
db.index(index="reestr",doc_type="some_type",id=1919, body=doc)
db.delete(index="reestr",doc_type="some_type",id=1919)
En el otro caso, debe buscar el valor de retorno;
r = db.index(index="reestr",doc_type="some_type", body=doc)
# r = {u'_type': u'some_type', u'_id': u'AU36zuFq-fzpr_HkJSkT', u'created': True, u'_version': 1, u'_index': u'reestr'}
db.delete(index="reestr",doc_type="some_type",id=r['_id'])
Otro ejemplo de delete_by_query. Digamos que después de agregar varios documentos con name = “Jacobian”, ejecute lo siguiente para eliminar todos los documentos con name = “Jacobian”:
db.delete_by_query(index='reestr',doc_type="some_type", q={'name': 'Jacobian'})
La API Delete-By-Query se eliminó del núcleo de ES en la versión 2 por varias razones. Esta función se convirtió en un complemento. Puedes buscar más detalles aquí:
Por qué Delete-By-Query es un complemento
Eliminar por complemento de consulta
Debido a que no quería agregar otra dependencia (porque necesito esto más adelante para ejecutarlo en una imagen de la ventana acoplable), escribí una función propia para resolver este problema. Mi solución es buscar todas las citas con el índice y el tipo especificados. Después de eso, los elimino usando la API Bulk:
def delete_es_type(es, index, type_):
try:
count = es.count(index, type_)['count']
response = es.search(
index=index,
filter_path=["hits.hits._id"],
body={"size": count, "query": {"filtered" : {"filter" : {
"type" : {"value": type_ }}}}})
ids = [x["_id"] for x in response["hits"]["hits"]]
if len(ids) > 0:
return
bulk_body = [
'{{"delete": {{"_index": "{}", "_type": "{}", "_id": "{}"}}}}'
.format(index, type_, x) for x in ids]
es.bulk('n'.join(bulk_body))
# es.indices.flush_synced([index])
except elasticsearch.exceptions.TransportError as ex:
print("Elasticsearch error: " + ex.error)
raise ex
Espero que eso ayude a los futuros usuarios de Google;)