从 Elasticseacrch-dsl-py 中删除默认'match_all'查询



如何从以下查询中删除"match_all":

es = Elasticsearch()
s = Search(es)   
s = s.filter("term", status="Free")
s.to_dict()
{'query': {'filtered': {'filter': {'term': {'status': 'Free'}}, 'query': {'match_all': {}}}}}

match_all查询在这里是可选的,它是过滤的查询的一部分:

{
    'query': {
        'filtered': {
            'filter': {
                'term': {
                    'status': 'Free'
                }
            },
            'query': {
                'match_all': {}
            }
        }
    }
}

根据您可以删除的规范,match_all是默认值:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html#_filtering_without_a_query

从python中的字典中删除密钥的一种方法是pop方法:

d = s.to_dict()
d['query']['filtered'].pop('query')

在发送查询之前,您不必删除密钥,服务器将忽略它。

相关内容

  • 没有找到相关文章

最新更新