我的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] 的映射中找不到 [variant_group.variant_info] 的字段
我尝试使用 containsKey
如下:
{
"_script": {
"type": "number",
"order": "desc",
"script": {
"lang": "groovy",
"inline": "return doc.containsKey('variant_group.variant_info') ? 1 : 0"
}
}
}
此脚本 block 返回 0
而不是 1
但是,如果我执行这个:
{
"_script": {
"type": "number",
"order": "desc",
"script": {
"lang": "groovy",
"inline": "return doc.containsKey('variant_group.type_id') ? 1 : 0"
}
}
}
它返回预期的响应 1
集合类型是否存在我遗漏的陷阱,或者我的代码是否存在问题?
谢谢!
最佳答案
您应该使用“doc['variant_group']['variant_info']”或“doc.variant_group.variant_info”而不是“doc['variant_group.variant_info']”。我也很幸运地使用了“_source.variant_group.variant_info”。
关于elasticsearch - 在与类型 [doc] 的映射中找不到 [path] 的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54229186/