我有一个脚本化指标,我正在尝试获取已分析字符串的值,该字符串返回一个字符串数组。
我正在尝试获取分析字段的正确值,该字段返回按字母顺序排序并按空格分隔的字符串。对于未分析的字符串运行良好。
带有分析字段的脚本化指标:
"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' ]
并且 field_analyzed2
的结果是 claudio
,只是数组的第一个字符串。对于字段 field_not_analyzed
,结果是正确的 Francisco Claudio Urbano
。
我认为使用新版本我可以做这样的事情或使用无痛脚本:
result['field_text'] = doc['field_text.keyword'].value;
但我在 ES 1.7 中需要它
body = {
'script_fields': {
'test': {
'script': 'doc["analyzed_field"].value',
'lang': 'groovy'
}
}
}
最佳答案
在 1.7 中,您可以创建非分析子字段
"properties" : {
"name" : {
"type" : "string",
"fields" : {
"raw": {
"type" : "string",
"index" : "not_analyzed"
}
}
}
这与新版本中的 type 关键字类似
关于python - Elasticsearch 1.7 scripted_metric 分析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58061183/