从 java 的 elasticsearch 中更新嵌套类型中的字段



请找到下面的映射,我们正在尝试更新域类型中的域字段。

 "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 中解决此问题。

要更新,您可以尝试:

UpdateRequestBuilder br = client.prepareUpdate(indexName, "candidate", domainDetails[2]);
br.setDoc("{"domains":{ "domains": " + domainDetails[1] + "}}".getBytes());
br.execute();

最新更新