Обновить поле внутри вложенного типа в asticsearch из Java

Найдите приведенное ниже сопоставление. Мы пытаемся обновить поле доменов внутри типа доменов.

 "mappings":{  
   "candidate":{  
      "_all":{  
         "enabled":false
      },
      "properties":{  
         "domains":{  
            "properties":{  
               "country":{  
                  "type":"short",
                  "include_in_all":false
               },
               "domains":{  
                  "type":"string",
                  "copy_to":[  
                     "domain_exact",
                     "domain_partial"
                  ]
               }
            }
         }
      }
   }
}

И код Java, приведенный ниже,

esMgr.updateIndex(indexName, "candidate", domainDetails[2]).setDoc("domains.domains", domainDetails[1])
                                .get();

Мы получаем следующее исключение,

Caused by: MapperParsingException[Field name [domains.domains] cannot contain '.'] 

Может кто-нибудь помочь нам, как исправить эту проблему в Java.

1 ответ

Чтобы обновить, вы можете попробовать:

UpdateRequestBuilder br = client.prepareUpdate(indexName, "candidate", domainDetails[2]);
br.setDoc("{\"domains\":{ \"domains\": " + domainDetails[1] + "}}".getBytes());
br.execute();
Другие вопросы по тегам