0
いくつかのデータ構造体(おそらくツリー)に格納された任意のネストされたクエリを構築しようとしています。elasticsearch_dslを使用して手動でフィルタクエリを作成する
s = Search()
s = s.filter('terms', tags=['search', 'python'])
と
s = Search()
s = s.query('bool', filter=[Q('terms', tags=['search', 'python'])])
が同じになるように
From the manual私は、クエリの
filter
タイプは
Bool
クエリの特別な種類があることを収集します。 私はこれを私のクエリで試しましたが、何かが正しく動作していません。
は、この最初のクエリが動作し、期待される結果を返します:私はのでElasticSearchのバージョン1を使用しています
s = Search(using=client, index='index')
s = s.query(Q('bool', filter=[Q('term', some_field=some_value])]))
print(s.to_dict())
>>> {'query': {'bool': {'filter': [{'term': {some_field': some_value}}]}}
注:動作するようには思えないクエリの例を模倣
s = Search(using=client, index='index')
s = s.filter('term', some_field=some_value)
print(s.to_dict())
>>> {'query': {'filtered': {'filter': {'term': {'some_field': 'some_value'}}, \
'query': {'match_all': {}}}}}
を何らかの理由でAWSがまだアップグレードされていません。
を含めるように
requirements.txt
ファイルを変更する必要がありは、「ライブラリーは、1.1以降のすべてのElasticsearchのバージョンと互換性がありますが、あなたは、一致メジャーバージョンを使用する必要があります。」私は既に使用しています。 'bool/filter'が' 1.x'バージョンではサポートされていないとは言わない – meto
'bool/filter'がES 2.xで導入されたので、1.xバージョンではサポートされないことを保証できます – Val
これで運がいい? – Val