elasticsearch 脚本给出异常的弹性搜索聚合,elasticsearch,elasticsearch" /> elasticsearch 脚本给出异常的弹性搜索聚合,elasticsearch,elasticsearch" />

elasticsearch 脚本给出异常的弹性搜索聚合

elasticsearch 脚本给出异常的弹性搜索聚合,elasticsearch,elasticsearch,查询失败[未能执行主查询];嵌套:GroovyScriptExecutionException[ArrayIndexOutOfBoundsException[-1]] 我正在使用以下aggs查询 { "aggs": { "hscodes_eval": { "terms": { "field": "fscode" }, "aggs": { "top_6_fscodes": {

查询失败[未能执行主查询];嵌套:GroovyScriptExecutionException[ArrayIndexOutOfBoundsException[-1]]

我正在使用以下aggs查询

{
  "aggs": {
    "hscodes_eval": {
      "terms": {
        "field": "fscode"
        },
        "aggs": {
                "top_6_fscodes": {
                  "terms": {
                    "field": "fscode",
                     "script": "doc[\"fscode\"].value[0..6]"
                  }
                }
              }
      }
  }
}
我想获得与字段fscode的前6个字符匹配的文档数。 但我遇到了上述异常。请帮助。

尝试以下操作:

{
  "aggs": {
    "hscodes_eval": {
      "terms": {
        "field": "fscode"
      },
      "aggs": {
        "top_6_fscodes": {
          "terms": {
            "script": "fieldValue=doc['fscode'].value;if(fieldValue.length()>=7) fieldValue[0..6] else ''"
          }
        }
      }
    }
  }
}
但我不会这样做,这意味着使用
脚本。脚本通常很慢,如果您有很多文档,那么它可以很快添加起来

我没怎么考虑过这个问题,但我的直觉告诉我,我会尝试在索引时,,在首字母
fscode
的前6个字符中输入一个字母,可能使用一个。然后,在搜索时,我会在已定义的子字段上使用聚合,而不是在
fscode
上使用聚合

{
  "aggs": {
    "hscodes_eval": {
      "terms": {
        "field": "fscode"
      },
      "aggs": {
        "top_6_fscodes": {
          "terms": {
            "script": "fieldValue=doc['fscode'].value;if(fieldValue.length()>=7) fieldValue[0..6] else ''"
          }
        }
      }
    }
  }
}
但我不会这样做,这意味着使用
脚本。脚本通常很慢,如果您有很多文档,那么它可以很快添加起来

我没怎么考虑过这个问题,但我的直觉告诉我,我会尝试在索引时,,在首字母
fscode
的前6个字符中输入一个字母,可能使用一个。然后,在搜索时,我会在已定义的子字段上使用聚合,而不是在
fscode
上使用聚合