0
クエリ実行時に特定のスコアを生成するカスタムネイティブSearchScript
を実装中です。 x
という用語が与えられた場合、スクリプトはインデックス内のドキュメントセットに対して類似性メトリックを計算する必要があります。検索スクリプトは、ScriptEngineService
インスタンスを使用してコンパイルして実行する必要があります。ただし、マッピングエンドポイントを使用して明示的に定義されたフィールドがある場合、そのフィールドはセグメント内に見つかりません。ElasticSearch 5.5 SearchScript
@Override
public Function<Map<String,Object>,SearchScript> compile(String scriptName, String scriptSource, Map<String, String> params) {
if ("script".equals(scriptSource)) {
return p -> new SearchScript() {
final String field;
final String term;
{
field = p.get("field").toString();
term = p.get("term").toString();
}
@Override
public LeafSearchScript getLeafSearchScript(LeafReaderContext context) throws IOException {
PostingsEnum postings = context.reader().postings(new Term(field), PostingsEnum.PAYLOAD);
if (postings == null) {
// The field has not been found within the segment.
return() -> 0;
}
特定のフィールドを含むドキュメントが見つかりません。