Elasticsearch: custom_scoreクエリのnull値フィールドにより、「フィールドなし」エラーが発生します

作成日 2011年02月09日  ·  5コメント  ·  ソース: elastic/elasticsearch

custom_scoreクエリを使用し、null値を含む可能性のあるフィールドに基づいてスコアを付けようとすると、落とし穴があるようです。

私が持っているとすると:

{"user": {"name": "John", "position": null}}

custom_scoreと次のようなスクリプトを使用してクエリを実行すると、次のようになります。

{"script": "_score + doc['position'].value"}

次のエラーが発生します。

ElasticSearchIllegalArgumentException[No field found for [position]]; }]

別のユーザーを追加した場合:

{"user": {"name": "Jane", "position": 1}}

すべてが正常に動作します。

デフォルトの動作は、null値フィールドがnullを返すことであり、エラーを発生させないようにする必要があると思います。

上記の例は不十分に見えるかもしれませんが、データベースからのデータでインデックスを埋めることを想像してください。ここでは、列にnull値以外のものが含まれないという保証はありません。 マッピングを使用してフィールドを文字列に型キャストすることでこれを回避できますが、ElasticSearchがスクリプト値をよりインテリジェントに処理できることを強くお勧めします。

最も参考になるコメント

これは機能するはずです:

{"script": "_score + (doc.containsKey('position') ? doc['position'].value : 0)"}

または多分これさえ:

{"script": "_score + (doc['position'] ? doc['position'].value : 0)"}

それでも、十分なデータセットがあり、少なくとも1つのドキュメントの各シャードの値がpositionである場合、このチェックは必要ありません。そうすれば、スクリプトのパフォーマンスが大幅に向上します。

全てのコメント5件

ああ-そして素晴らしい製品をありがとう! :-)

やあ、

これは、そのフィールドがまだ導入されていないために発生します(null値があります)。 クラスターに(単一の値で)導入されると、正常に機能します。 そのフィールドがnullである場合に、特定のnull値にインデックスを付けるマッピングでnull-valueを定義することもできます。 導入されていないため、その型を導出することはできません。

はい、わかりました。 例外を発生させて結果が返されないようにするのではなく、スクリプト値がnullを返すか、少なくともその存在をチェックするための何らかの関数を使用する方がよいのではないでしょうか。

例えば:

{"script": "_score + (doc['position'].present ? doc['position'] : 0)"}

これは機能するはずです:

{"script": "_score + (doc.containsKey('position') ? doc['position'].value : 0)"}

または多分これさえ:

{"script": "_score + (doc['position'] ? doc['position'].value : 0)"}

それでも、十分なデータセットがあり、少なくとも1つのドキュメントの各シャードの値がpositionである場合、このチェックは必要ありません。そうすれば、スクリプトのパフォーマンスが大幅に向上します。

致命的なエラー:キャッチされていません[NoFieldFound]フィールドが見つかりません:Contact._PloiciesLastApplicationDate0試行されました:1回。 投げられる

連絡先の更新中に次のエラーが発生します。

例:-

$ checkExist = Infusionsoft_DataService :: query(new Infusionsoft_Contact()、array('Phone1' =>'(618)-795-0304'));

連絡先を取得し、電話番号に基づいて連絡先を更新していますが、このエラーが発生しますか?

ありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

rjernst picture rjernst  ·  3コメント

clintongormley picture clintongormley  ·  3コメント

ttaranov picture ttaranov  ·  3コメント

matthughes picture matthughes  ·  3コメント

dawi picture dawi  ·  3コメント