已尝试执行以下查询以获取2个数组字段的值及其对应的长度,但数组值和长度不匹配。
查询:
GET my_index/_search
{
"_source": ["file_types", "link_to_file"],
"query": {
"bool": {
"filter": [
{
"term": {
"_id": "45t8724b811b590d54cc1925166a9cb5"
}
}
]
}
},
"script_fields": {
"file_types_len": {
"script": "doc['file_types'].length"
},
"link_to_file_len": {
"script": "doc['link_to_file'].length"
}
}
}
结果:
{
"_index": "my_index-150522",
"_type": "_doc",
"_id": "45t8724b811b590d54cc1925166a9cb5",
"_score": 0.0,
"_source": {
"link_to_file": [
"https://bucket.s3.amazonaws.com/abc123",
"https://bucket.s3.amazonaws.com/wer134"
],
"file_types": ["jpeg", "jpeg"]
},
"fields": {
"file_types_len": [1],
"link_to_file_len": [2]
}
}
根据返回的值,两个数组的长度都是2,但其中一个数组的长度是1。为什么会这样?
1条答案
按热度按时间h5qlskok1#
这是因为
file_types
数组两次包含相同的值(即jpeg
)。由于您的脚本适用于doc values,因此数组只包含一个jpeg
示例,不需要两个。如果你想获取数组在
_source
中的长度,那么你可以修改你的脚本来处理_source
字段,如下所示: