Не найдено поле для [path] в отображении с типами [doc] - PullRequest
0 голосов
/ 17 января 2019

Моя модель документа 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 }"
        }
     }
  }

возникает следующая ошибка Не найдено поле для [variable_group.variant_info] при сопоставлении с типами [merchant_variant_group]

Я пытался использовать 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

Есть ли ошибка, которую мне не хватает для типов коллекций, или есть какая-то проблема с моим кодом?

Спасибо!

1 Ответ

0 голосов
/ 18 января 2019

Вместо "doc ['variable_group.variant_info']" вы должны использовать "doc ['variable_group'] ['option_info']" или "doc.variant_group.variant_info". Мне также повезло с "_source.variant_group.variant_info".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...