elasticsearch 在类型为[doc]的映射中找不到[path]的字段,elasticsearch,groovy,elasticsearch,Groovy" /> elasticsearch 在类型为[doc]的映射中找不到[path]的字段,elasticsearch,groovy,elasticsearch,Groovy" />

elasticsearch 在类型为[doc]的映射中找不到[path]的字段

elasticsearch 在类型为[doc]的映射中找不到[path]的字段,elasticsearch,groovy,elasticsearch,Groovy,我的ES文档模型如下 "hits": [ { "_source": { "variant_group": { "variant_info": [ { "name": "Toothpaste", "inventory": 10

我的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\u variant\u group]的映射中未找到[variant\u group.variant\u 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

集合类型是否缺少一个gotcha,或者我的代码是否存在一些问题


谢谢

您应该使用“doc['variant\u group.variant\u info']”或“doc.variant\u group.variant\u info']”来代替“doc['variant\u group.variant\u info']”。我还很幸运地使用了“\u source.variant\u group.variant\u info”

您好,_source.variant_group.variant_信息似乎正在工作。但是无法访问variant_info对象中的键。我认为这是一个非常奇怪的行为variant_info指的是一个数组/列表,您可以在部分之后添加“.dump()”,您不确定是否要查看您拥有的内容。