Elasticsearch 1.7脚本化度量分析字符串

2024-10-01 09:32:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本化的度量,我试图获得一个已分析字符串的值,它返回一个字符串数组。在

我试图为一个分析过的字段获取正确的值,该字段返回按字母顺序排序并按空格分隔的字符串。与未分析的管柱配合良好。在

带分析字段的脚本化度量:

"aggs": {
            'influencers': {
                'scripted_metric': {
                    "init_script": "_agg['transactions'] = []",
                    'map_script': """
                        result = [:];
                        result['field_analyzed1'] = doc['field_analyzed1'].values;
                        result['field_analyzed2'] = doc['field_analyzed2'].value;
                        result['field_not_analyzed'] = doc['field_not_analyzed'].value;
                        _agg.transactions.add(result);
                        """
                }
            }
        }

我试图得到以下字符串Francisco Claudio Urbano,但是field_analyzed1的结果是['claudio', 'francisco', 'urbano'],而{}的结果是claudio,只是数组的第一个字符串。对于字段field_not_analyzed,结果是正确的Francisco Claudio Urbano。在

我认为对于较新的版本,我可以这样做,或者使用轻松的脚本:

^{pr2}$

但我需要ES1.7

body = {
    'script_fields': {
        'test': {
            'script': 'doc["analyzed_field"].value',
            'lang': 'groovy'
        }
    }
}

Tags: 字符串脚本fielddoc度量valuescriptnot
1条回答
网友
1楼 · 发布于 2024-10-01 09:32:13

在1.7中,您可以创建一个未分析的子字段

"properties" : {
            "name" : {
                "type" : "string",
                "fields" : {
                    "raw": {
                        "type" : "string",
                         "index" : "not_analyzed"
                    }
                }
            }

这与新版本中的type关键字类似

相关问题 更多 >