Les puits rencontrés par ElasticSearch7 JavaAPI Java High Level REST Client à l'aide d'un script script

version

ElasticSearch : 7.9
elasticsearch-rest-high-level-client : 7.6

problème

J'ai écrit un projet récemment. J'ai utilisé ES quand j'avais besoin de chercher, mais j'ai rencontré quelques trous lors de l'utilisation de script. Enregistrez ici. Mon script existe déjà dans ES et est appelé par id.

processus

1. Utilisez la méthode getParams (). Put () de Script pour définir les paramètres

Résultat: java.lang.UnsupportedOperationException est levée, car la méthode getParams () de Script obtient un UnmodifiableMap, qui est une Map non modifiable et en lecture seule. L'utilisation de la méthode put lèvera une exception. Par conséquent, transmettez le constructeur Entrez simplement les paramètres.

2. Une erreur Variable ** indéfinie s'est produite lors de l'utilisation

Raison: Ceci est lié à ScriptType. Il existe deux types d'énumération ScriptType: INLINE et STORED. Puisque mon script existe dans ES, je devrais utiliser STORED.

if (this.type == ScriptType.INLINE) {
           ...
        } else {
            builder.field("id", this.idOrCode);
        }

Le code source montre que lorsque le ScriptType est INLINE, idOrCode est le code, c'est-à-dire le code du script, et lorsque le ScriptType est STORED, il est utilisé comme identifiant de script stocké dans ES, mais j'ai utilisé INLINE dans le constructeur, donc une erreur s'est produite. De plus, en regardant le code, vous pouvez voir que le ScriptType par défaut est INLINE, et dans le bloc de code statique, définissez DEFAULT_SCRIPT_TYPE sur INLINE

 DEFAULT_SCRIPT_TYPE = ScriptType.INLINE;

3. Exécutez à nouveau, lancez java.lang.IllegalArgumentException: lang ne peut pas être spécifié pour les scripts stockés

Raison: Dans la langue du constructeur, j'ai mis "indolore"

if (lang != null) {
                throw new IllegalArgumentException("lang cannot be specified for stored scripts");
            }

Selon le code source, définissez simplement le paramètre lang sur null

Je suppose que tu aimes

Origine blog.csdn.net/Baibair/article/details/108361192
conseillé
Classement