Django haystack:elasticsearch如何通过查询

时间:2017-12-05 23:03:07

标签: django elasticsearch django-haystack

ElasticSearch提供了delete_by_query的方法,我看到它在后端的clear方法上被调用:

self.conn.delete_by_query(index=self.index_name, doc_type='modelresult', body=query)

其中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'}}})

并输出如下内容:

  

{' _version':4,':False,' _id':' _delete_by_query',' _index&# 39;:' haystack',' _type&#39 ;:' modelresult',' _shards':{'成功':1 ,'失败':0,'总计':2}}

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

顺便说一下,我还检查过我可以得到一个"查询"来自SearchQuerySet实例:

sqs.query.build_query()

给出:

'category:(5)'

因此,如果我可以使用query方法的delete_by_query输出,但我不知道如何使用它会非常有用

0 个答案:

没有答案