我必须迁移术语facet
{
"facets" : {
"facet_name" : {
"terms" : {
"field" : "location",
"script" : "return doc['location'].value == \"UA\""
}
}
}
}
到聚合术语
{
"aggs" : {
"agg_name" : {
"terms" : {
"field" : "location",
"script" : "return doc['location'].value == \"UA\""
}
}
}
}
Facet在弹性方面工作正常(我在1.1.2和1.5.2上测试过)
但聚合会引发异常 org.elasticsearch.script.groovy.GroovyScriptExecutionException:ArrayIndexOutOfBoundsException [-1]
根据问题描述https://github.com/elastic/elasticsearch/issues/11728出现此类行为,因为在找到显式“字段”时聚合使用“值”脚本。
对于facets脚本是传统的。
如何禁用此脚本的“值”性质并使其像facet一样工作?
提前致谢!
PS:我不能使用过滤(包含/排除),排除规则应该在脚本中声明,与facet相同。
答案 0 :(得分:0)
我通过修改脚本并从agg中删除“field”找到了解决方法:
{
"aggs" : {
"agg_name" : {
"terms" : {
"script" : "if (_source.location == \"UA\") {return _source.location} else {return null}"
}
}
}
}