微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 XContentBuilder 和 RestHighLevelClient 部分更新索引,动态映射严格

如何解决使用 XContentBuilder 和 RestHighLevelClient 部分更新索引,动态映射严格

我创建了一个动态映射严格的文档映射。它有一个嵌套字段,我想使用 RestHighLevelClient for ElasticSearch 对其进行部分更新

private void updateItem(Long itemId,XContentBuilder updateDocument) throws IOException {
UpdateRequest updateRequest = new UpdateRequest(INDEX_NAME,String.valueOf(itemId));
updateRequest.doc(updateDocument,XContentType.JSON).docAsUpsert(false);

try {
  esClient.update(updateRequest,RequestOptions.DEFAULT);
} catch (ElasticsearchException e) {
  log.warn(
      "Elasticsearch error at updating item with id {}\nupdateDocument: {}",productId,Strings.toString(updateDocument));
  throw new IOException("Error at updating item in elasticsearch!",e);
}

}

上面的代码已经有 updateDocument,它是一个嵌套字段(已经是映射的一部分),我正在尝试更新索引 这样做时,我总是收到错误

{"error":{"root_cause":[{"type":"strict_dynamic_mapping_exception","reason":"mapping set to strict,dynamic introduction of [org] within [_doc] is not allowed"}],"type":"strict_dynamic_mapping_exception",dynamic introduction of [org] within [_doc] is not allowed"},"status":400}

我不是在引入新字段,而只是更新作为映射文档一部分的现有嵌套字段。所以我不知道为什么我会收到这个错误

抱歉,如果我没有清楚地表达自己或缺少信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。