問題タブ [elasticsearch-dsl-py]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - ネストされたフィールドは、elasticsearch-dsl-py でのインデックス作成時に TypeError を返します
ネストされたフィールドを持つオブジェクトを保存しようとすると、型エラーが発生します。
TypeError: isinstance() arg 2 must be a type or tuple of types
次のドキュメント クラスがあります。
私のインダストリ モデルは、次のように定義されている django モデルです (mongoDB を使用しているため、それ自体が動的ドキュメントです)。
今、bulk_indexing モジュールを実行するたびに、問題が発生します。
なぜこのエラーが発生するのですか? ネストされた更新ファイルを削除すると、作成フィールドは同じですが、すべて機能します。ここで何が問題なのですか?
elasticsearch - Python の elasticsearch_dsl 検索を使用して、スクリプト化されたフィールドをどのように合計しますか?
これは私にとって正しく機能します:
special
そして今、すべてのヒットにフィールドの合計を付けたいと思います。私はこれを試しました:
しかしaggs
、応答の属性を確認すると、
応答自体はspecial
、各エントリに正しく入力されていることを示しており、常に肯定的です。合計が発生したときに周りにいないように見えるspecial
ので、elasticsearch はそれを認識せず、合計を0
. pipeline
の代わりに試してみましたmetric
が、状況は変わりませんでした。私が提案していることは可能であるべきですよね?
Elasticsearch ではなくスクリプトで合計を計算することもできますが、ES 側の合計ははるかに高速になると確信しています。
アップデート
このelasticsearchフォーラムでの議論に基づいて、私はそれが機能するはずの方法を見つけたと思いますが、それでも私にとっては適切に機能していません. 次のように、集計内にスクリプトを提供します。
ここでの問題は、出力が正しくないことです。特定の時間の 1 つの項目を含むテスト インデックスで、合計集計でそのフィールドを報告しようとしましたが、期待される結果 (フィールドの値) の代わりに、128 異なる値が得られました。
アップデート
Elasticsearch ヘルプ フォーラムでこの最後の問題に対する回答を受け取りました: https://discuss.elastic.co/t/script-aggregation-yields-wrong-but-close-answer/133744/3?u=rschwieb
簡単に言えば、フィールドに格納されたデータはelasticsearchによってdoubleとして解釈されましたが、集計ではインデックスのマッピングによって決定されたタイプが使用されました(代わりに「float」と表示されました)。フィールドを double として再インデックスした後、数値は期待どおりになります。