filter
現在、ライブラリを介して既存の ElasticSearch インスタンスでa を使用しようとしていますelasticutils
。残念ながら、私はどこにも行きません。問題が基本的な間違いを犯したためなのか、それともライブラリに問題があるのか どうかはわかりません(AFAICTの可能性があります)。
文字列型のフィールド(「A」など)を含む特定のマッピングを持つインデックスを取得しました(明示的なアナライザーは指定されていません)。そのフィールドには常に文字列のリストが含まれています。
そのフィールドAに特定の文字列を含めることでドキュメントをフィルタリングしたいので、試しました:
import elasticutils as eu
es = eu.S().es(urls=[ URL ]).indexes(INDEX).doctypes(DOCTYPE)
f = eu.F(A="text")
result = es.filter(f)
しかし、それは空の結果セットを返します。も使用してみましf = eu.F(A__in="text")
たが、その結果、大きなエラー メッセージが表示されました。最も興味深い部分は[terms] filter does not support [A]
.
インデックスを別の方法で構成する必要があるかどうか疑問に思っています。おそらく、フィルターを使用できるようにファセットを作成する必要がありますか? しかし、私が読んだドキュメントには、これに関するヒントは見つかりませんでした。
使いたい理由は、、 、 でfilter
自由に組み合わせられるからです。また、これもブール値である可能性があることを説明するいくつかの仕様を見つけましたが、それらは通常、 、、およびを参照していますが、これは私にとって十分な柔軟性がないと思います。しかし、またはに設定できる s のフラグについて言及している仕様もいくつか見つけました。それに関する情報は大歓迎です。and
or
not
query
must
should
must_not
operator
query
and
or
だから、私の質問は次のとおりです。
- 構成の問題ですか?ファセットはこれと関係がありますか?
- ライブラリをスキップして、これがライブラリのバグかどうかをテストしたいのですが、たとえば、curl だけを使用してこのフィルタリング アクションを実行するにはどうすればよいですか? または他のライブラリ(おそらく
pyes
)? - 複数のクエリを柔軟に組み合わせる (
and
、or
、 、およびそれらのグループ化を使用する) ことは可能ですか (つまり、フィルターをまったく使用しません)?not
どうすればいいですか?(できれば、elasticutils
他のライブラリ構文、たとえばpyes
、または単純な CURL も同様に歓迎されます)。