我的ES文档模型如下
"hits": [
{
"_source": {
"variant_group": {
"variant_info": [
{
"name": "Toothpaste",
"inventory": 10
}
],
"type_id": 1365
}
},
]
当我尝试在排序中执行以下查询时:
{
"_script": {
"type": "number",
"order": "desc",
"script": {
"lang": "groovy",
"inline": "return doc['variant_group.variant_info'].values.any{ it -> it.inventory > 0 }"
}
}
}
引发以下错误在类型为[merchant_variant_group]的Map中找不到[variant_group.variant_info]的字段
我尝试按如下方式使用containsKey
:
{
"_script": {
"type": "number",
"order": "desc",
"script": {
"lang": "groovy",
"inline": "return doc.containsKey('variant_group.variant_info') ? 1 : 0"
}
}
}
此脚本块返回0
,而不是1
但是,如果执行以下命令:
{
"_script": {
"type": "number",
"order": "desc",
"script": {
"lang": "groovy",
"inline": "return doc.containsKey('variant_group.type_id') ? 1 : 0"
}
}
}
它返回预期的响应1
是不是我遗漏了一个集合类型的问题,或者我的代码有什么问题?
谢谢你!
2条答案
按热度按时间ibrsph3r1#
您应该使用“doc['variant_group '] ['variant_info']”或“doc.variant_group. variant_info”来代替“doc['variant_group. variant_info']”。我也很幸运地使用了“_source.variant_group.variant_info”。
ntjbwcob2#
我不知道为什么,但这样的模式对我起了作用:我改用:
这是:
请尝试: