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

时间:2017-01-27 10:20:41

标签: java elasticsearch elasticsearch-mapping elasticsearch-nested

请查看以下映射,我们正在尝试更新域类型中的域字段。

 "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 个答案:

答案 0 :(得分:0)

要进行更新,您可以尝试:

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