0

次のクエリから「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': {}}}}}
4

1 に答える 1

1

ここでは、 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')

クエリを送信する前にキーを削除する必要はありません。サーバーはそれを無視します。

于 2016-01-07T12:48:06.920 に答える