2017-02-17 24 views
0

Pythons Elasticsearch DSLライブラリを使用してFacetedSearchクラスを独自に作成して、def search(self)で追加のフィルタリングで検索を実行しました。今度はクラスを再利用していくつかの統計集計を行いたいと思います。 DRYを維持するために、私はこのクラスを再利用したいが、パフォーマンス上の理由から、すべてのフィルタリングを保持しながら、必要でないときにファセット計算を一時的に無効にしたいと思う。ですから、FacetedSearch検索でファセットを一時的に省略するにはどうすればよいですか?PythonのFacetedSearchでファセットを一時的に無効にする

答えて

1

オブジェクトのクエリはSearchですが、集計は使用しないでください。その場合は、オブジェクトのsearch()メソッドを呼び出してSearchオブジェクトを取得し、そこから移動します。

あなたは集計をしたいが、ただ単に集計を含む生Searchオブジェクトを取得するにはbuild_searchメソッドを使用してのpython-レベルfacets計算をスキップしたい場合。

+0

ありがとうございます!さらに、ビルドインpost_filterの代わりに標準のフィルタを使う必要があるので、 'self.aggregate()'をスキップして別の 'self.filter(s)'を使う独自の 'build_search'関数を作成しました。 'self.build_search()'が '__init__'から自動的に実行される理由はありますか?私の場合は役に立たない。 – igo

+0

なぜそれが '__init__'から実行されるのかは、常に必要とされるためです。代わりに、要求に応じて作成するプロパティのフォームを作成しようとしています。 –

関連する問題