ElasticSearch script查询报错Variable [field] is not defined

这篇具有很好参考价值的文章主要介绍了ElasticSearch script查询报错Variable [field] is not defined。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ES版本7.6.0
想筛选某两个字段之和大于10的文档,需要用到脚本,简化的请求如下

{
  "query":
  {
    "bool":
    {
      "must":
      [
        {
          "script":
          {
            "script": "doc['field'].value >= 1"
          }
        }
      ]
    }
  }
}

报错提示field未定义,报错详情

{
  "error" : {
    "root_cause" : [
      {
        "type" : "script_exception",
        "reason" : "compile error",
        "script_stack" : [
          "doc[field]. ...",
          "    ^---- HERE"
        ],
        "script" : "doc[field].value >= 1",
        "lang" : "painless"
      }
    ],
    "type" : "search_phase_execution_exception",
    "reason" : "all shards failed",
    "phase" : "query",
    "grouped" : true,
    "failed_shards" : [
      {
        "shard" : 0,
        "index" : "...",
        "node" : "...",
        "reason" : {
          "type" : "query_shard_exception",
          "reason" : "failed to create query: ...",
          "index_uuid" : "...",
          "index" : "...",
          "caused_by" : {
            "type" : "script_exception",
            "reason" : "compile error",
            "script_stack" : [
              "doc[field]. ...",
              "    ^---- HERE"
            ],
            "script" : "doc[field].value >= 1",
            "lang" : "painless",
            "caused_by" : {
              "type" : "illegal_argument_exception",
              "reason" : "Variable [field] is not defined."
            }
          }
        }
      }
    ],
    "caused_by" : {
      "type" : "script_exception",
      "reason" : "compile error",
      "script_stack" : [
        "doc[field]. ...",
        "    ^---- HERE"
      ],
      "script" : "doc[field].value >= 1",
      "lang" : "painless",
      "caused_by" : {
        "type" : "illegal_argument_exception",
        "reason" : "Variable [field] is not defined."
      }
    }
  },
  "status" : 400
}

解决方法:改用双引号包裹包裹字段名文章来源地址https://www.toymoban.com/news/detail-722303.html

{
  "query":
  {
    "bool":
    {
      "must":
      [
        {
          "script":
          {
            "script": "doc[\"field\"].value >= 1"
          }
        }
      ]
    }
  }
}

到了这里,关于ElasticSearch script查询报错Variable [field] is not defined的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 配置maven报错The JAVA_HOME environment variable is not defined correctly的解决方法

    提示:其实也很明显,主要还是JAVA_HOME的配置影响了MAVEN_HOME的配置报错 1.检查JAVA_HOME的配置路径,是否为jdk安装目录,检查是否结尾有空格。 2.检查path中JAVA_HOME配置是否为%JAVA_HOME%bin,检查是否结尾有空格。 3.如果还是不行就把JAVA_HOME删除保存后重新配置,把path中%JAVA_HOM

    2023年04月08日
    浏览(54)
  • 【异常】SpringMVC报错Required URI template variable ‘a‘ for method parameter type String is not present

    【异常】记一次因SpringMVC @GetMapping注解错误使用,导致SQLParsingException: You have an error in your SQL syntax 【异常】记一次因注解@RestController没加(@RestController不会用),导致无法调用Controller层的方法 【异常】Required URI template variable ‘a‘ for method parameter type String is not present 【异常

    2023年04月15日
    浏览(48)
  • mac Maven配置报错The JAVA_HOME environment variable is not defined correctly的解决方法

    若衣框架需要后端部署打包 例如:mac使用命令 报错如下 “zsh: command not found: mvn” 错误消息表明在您的系统上找不到 “mvn” 命令,这意味着 Maven 没有被正确安装或没有在系统的 PATH 环境变量中。 要解决这个问题,您可以按照以下步骤进行操作: 1、安装 Maven: 如果您尚未

    2024年02月03日
    浏览(58)
  • [ 亲测有效 ] Tomcat环境变量配置报错闪退:The CATALINA_HOME (JRE_HOME) environment variable is not defined correctly

    今天启动tomcat时遇到的问题,点击运行startup.bat直接闪退没有页面。 首先我们需要找到出问题的原因,通过cmd启动命令行窗口 → 通过cd命令到tomcat的bin目录下 → startup.bat + 回车运行startup.bat文件 然后就会显示出问题的原因了。 如果报错信息为 The CATALINA_HOME environment variable

    2024年02月15日
    浏览(40)
  • The JAVA_HOME environment variable is not defined correctly, this environment variable is needed to

    这个错误通常是因为系统无法找到正确的Java安装路径。要解决这个问题,你需要设置JAVA_HOME环境变量来指向Java的安装路径。 在Windows系统上,你可以按照以下步骤设置JAVA_HOME环境变量: 找到你的Java安装路径。通常情况下,Java安装在类似 “C:Program FilesJavajdk1.x.x_xx” 这样的

    2024年02月21日
    浏览(56)
  • The JRE_HOME environment variable is not defined correctly This environment variable is needed to ru

    The JRE_HOME environment variable is not defined correctly This environment variable is needed to run this program jdk的安装目录下没有jre(没安装jre),且没有添加环境变量 win+R → 输入cmd →路径换成你的jdk的安装目录(比如我的是F:1zGraduation projectJava EEjdk-12.0.2) → 运行命令 binjlink.exe --module-pat

    2024年02月08日
    浏览(44)
  • Field injection is not recommended

    意思就是不推荐使用字段注入的方式,不是不推荐 @Autowired 注解,以前为了简便就直接使用 @Resource 代替,程序员都在不断追求完美。。。 接下来我们实实在在的分析一下为啥不推荐,以及到底推荐那种方式注入。 不推荐使用@Autowired进行字段注入的原因有以下几点: 紧耦合

    2024年02月12日
    浏览(34)
  • The JAVA_HOME environment variable is not defined correctly

    排查 JAVA_HOME 路径错误 ,使用 echo %JAVA_HOME% 和 cd %JAVA_HOME% 来验证,具体操作如下: 执行 echo %JAVA_HOME% 如果输出 %JAVA_HOME% 说明环境变量中未配置 JAVA_HOME ,或名称写错了 用户变量、系统变量都要检查 继续执行 echo %JAVA_HOME% ,保证可以输出一个路径 继续执行 cd %JAVA_HOME% 如果报

    2024年04月13日
    浏览(48)
  • Elasticsearch:Combined fields 查询

    有时一个匹配项可以覆盖多个文本字段。 在这种情况下,你可以使用 combined_fields 查询来搜索多个文本字段,就好像它们的值实际上已被索引到一个组合字段中一样。 除此之外,combined_fields 的主要好处是强大且易于理解的评分算法。这种做法也有类似于 copy_to​​​​​​​

    2023年04月19日
    浏览(34)
  • maven推包The environment variable JAVA_HOME is not correctly set

    解决办法: 打开idea查看jdk安装位置 1.在/etc下面创建(如果存在就是更新)launchd.conf。里面添加一行: #JAVA_HOME后面是我的java安装路径。 2.执行下面命令: 3.重启开发工具。  

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包