Django haystack:elasticsearch如何通过查询删除
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
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
方法,这将非常有用,但我不知道如何使用它