elasticsearch,django-haystack,Django,elasticsearch,Django Haystack" /> elasticsearch,django-haystack,Django,elasticsearch,Django Haystack" />

Django haystack:elasticsearch如何通过查询删除

Django haystack:elasticsearch如何通过查询删除,django,elasticsearch,django-haystack,Django,elasticsearch,Django Haystack,ElasticSearch提供了一种访问的方法,我看到它在后端的clear方法上被调用,方法是: self.conn.delete_by_query(index=self.index_name, doc_type='modelresult', body=query) 其中,查询如下所示: {'query': {'query_string': {'query': "Model1 OR Model2"}}} 现在,我对ElasticSearch了解不多,我创建了如下索引: class MyInd

ElasticSearch提供了一种访问的方法,我看到它在后端的
clear
方法上被调用,方法是:

self.conn.delete_by_query(index=self.index_name, doc_type='modelresult', body=query)
其中,
查询
如下所示:

{'query': {'query_string': {'query': "Model1 OR Model2"}}}
现在,我对ElasticSearch了解不多,我创建了如下索引:

class MyIndex(indexes.SearchIndex, indexes.Indexable):
    ...
    category = indexes.CharField(model_attr='category_id')
    ...
现在我想从索引中删除所有与
category=5
匹配的文档,我尝试了如下操作:

backend.conn.delete_by_query(index='haystack', doc_type='modelresult', body= {'query': {'match': {'category': '5'}}})
它的输出如下:

{'query': {'query_string': {'query': "Model1 OR Model2"}}}
{“版本”:4,“创建”:False,“id”:“按查询删除”,“索引”:“haystack”,“类型”:“modelresult”,“碎片”:{“成功”:1,“失败”:0,“总计”:2}

但它没有删除它,我想我需要一个更好的查询,那么它会是什么呢?我还了解到我可以使用
ElasticSearch
中的
bulk
方法

顺便说一句,我还检查了我是否可以从
SearchQuerySet
实例获得一个“查询”:

sqs.query.build_query()
这就产生了:

'category:(5)'
因此,如果我可以将
query
输出用于
delete\u by\u query
方法,这将非常有用,但我不知道如何使用它