gpt4 book ai didi

javascript - ElasticSearch术语在子字符串上聚合

转载 作者:行者123 更新时间:2023-12-02 23:46:55 27 4
gpt4 key购买 nike

我想对zipCode进行术语汇总-一次包含5位数字,一次包含3位数字(德国)。

5位数字是正常用语的总和。

对于3位数字,我正在尝试以下脚本:

terms.script={
"source": "def zipCode = doc['zip.keyword'].size() > 0 ? doc['zip.keyword'].substring(0,2) : ''; return zipCode",
"lang": "painless",
}

这引发了以下错误:
root_cause: [
{
type: 'script_exception',
reason: 'runtime error',
script_stack: [Array],
script: "def zipCode = doc['zip.keyword'].size() > 0 ? " +
"doc['zip.keyword'].substring(0,2) : ''; return " +
'zipCode',
lang: 'painless'
}
],

字段的映射:
  zip: {
type: "text",
fields: {
keyword: {
type: "keyword",
ignore_above: 256
}
}
}

使用ElasticSearch 7.6。

那么,如何使这些术语与脚本化字段一起工作呢? :)

重要提示-有时该字段为空或不存在。

最佳答案

打算在关键字上执行字符串操作时,必须在关键字上调用.value:

{
"size": 0,
"aggs": {
"zipcodes": {
"terms": {
"script": {
"source": """
def zipCode = doc['zip.keyword'].size() > 0
? doc['zip.keyword'].value.substring(0, 2)
: '';
return zipCode
""",
"lang": "painless"
}
}
}
}
}

关于javascript - ElasticSearch术语在子字符串上聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60614547/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com