zoukankan      html  css  js  c++  java
  • ElasticSearch6.5.0 【script_lang not supported】

    执行代码:【就是想根据条件更新】把品牌为LiNing的都改成Cat。

    UpdateByQueryRequestBuilder updateByQuery = UpdateByQueryAction.INSTANCE.newRequestBuilder(client);
    updateByQuery.source("clothes")
        .size(100)  // 尝试获取的最大文档数
        .filter(QueryBuilders.matchQuery("brand","LiNing"))  // 查询brand=LiNing的
        .script(new Script(
            ScriptType.INLINE, 
            "ctx._source['brand'] = 'Cat'",
            Script.DEFAULT_SCRIPT_LANG,
            Collections.emptyMap()))
        .abortOnVersionConflict(false); // 版本冲突策略:abortOnVersionConflict 版本冲突时不终止

    报错如下:

    Exception in thread "main" java.lang.IllegalArgumentException: script_lang not supported [ctx._source['brand'] = 'Cat']
        at org.elasticsearch.script.ScriptService.getEngine(ScriptService.java:239)
        at org.elasticsearch.script.ScriptService.compile(ScriptService.java:293)
        at org.elasticsearch.index.reindex.AbstractAsyncBulkByScrollAction$ScriptApplier.apply(AbstractAsyncBulkByScrollAction.java:798)
        at org.elasticsearch.index.reindex.AbstractAsyncBulkByScrollAction$ScriptApplier.apply(AbstractAsyncBulkByScrollAction.java:759)
        at org.elasticsearch.index.reindex.AbstractAsyncBulkByScrollAction.buildBulk(AbstractAsyncBulkByScrollAction.java:207)
        at org.elasticsearch.index.reindex.AbstractAsyncBulkByScrollAction.prepareBulkRequest(AbstractAsyncBulkByScrollAction.java:317)
        at org.elasticsearch.index.reindex.AbstractAsyncBulkByScrollAction$1.doRun(AbstractAsyncBulkByScrollAction.java:280)
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:723)
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
        at org.elasticsearch.index.reindex.WorkerBulkByScrollTaskState$RunOnce.doRun(WorkerBulkByScrollTaskState.java:321)
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
        at org.elasticsearch.index.reindex.WorkerBulkByScrollTaskState$DelayedPrepareBulkRequest$1.doRun(WorkerBulkByScrollTaskState.java:257)
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:723)
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
    
    Process finished with exit code 1

    一开始我以为是有依赖没导进来,在网上查有人说要导入groovy-all的包,结果简直是放屁。

    现在我们来看官网的示例:

    一共四个参数,分别代表:脚本类型、脚本内容、lang,params。我的顺序跟它一模一样,第二个是脚本第三个是lang。真是哔了狗了。

    Java客户端API和人家提供的curl方式是有异曲同工之妙的,那我们看一下前端版本:主要看人家的变量命名

    最后,我看Java客户端API的定义!!!顺序是:↓↓↓  我发现 "lang": "painless" 应该在第2个位置!!第3个位置才是脚本内容!!

        public Script(ScriptType type, String lang, String idOrCode, Map<String, Object> params) {
            this(type, lang, idOrCode, type == ScriptType.INLINE ? Collections.emptyMap() : null, params);
        }

    麻蛋,官方都搞反了。

  • 相关阅读:
    [C]static变量详解
    [LINUX]重定向
    [PHP]一些坑
    [PHP]常量的一些特性
    [数学]三角函数(一)
    [PHP]session的一些要点
    [C]控制外部变量访问权限的extern和static关键字
    c语言基础----共用体
    c语言基础----字符串数组
    c语言基础----函数库
  • 原文地址:https://www.cnblogs.com/LUA123/p/9984075.html
Copyright © 2011-2022 走看看