Elasticsearch中的重叠对象

时间:2019-03-31 17:41:07

标签: java elasticsearch

我正在尝试更新Elasticsearch中的对象,但出现下一条错误消息:

  

Elasticsearch异常[type = mapper_parsing_exception,原因=对象   [errorMessages]的映射尝试将字段[errorMessages]解析为   对象,但找到了具体值]

This is my mappings:

{
.hierarchies: {
  mappings: {
   hierarchy: {
    dynamic: "strict",
   _all: {
      enabled: false
    },
    properties: {
      errorFlag: {
       type: "keyword"
     },
      errorMessages: {
        properties: {
           isFavourite: {
             type: "text"
        },
          message: {
             type: "text"
         }
       }
     },

  }
 }
}

我要更新的信息是这样的:

"errorMessages" -> "{"isFavourite":"yes","message":"hola"}"

我使用其余的客户端连接器和对象UpdateRequest:

 UpdateRequest updateRequest = new UpdateRequest(
                collection,
                type,
                id);

        updateRequest.doc(document);
        updateRequest.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
        try {
            return esConnector.getRestClient().update(
                    updateRequest, RequestOptions.DEFAULT);
        } catch (IOException e) {
            throw new ElasticsearchGenericException("Error updating document " + collection + " > " + type + " id: " + id + " (Reason: " + e.getMessage() + ")");
        }
    }

文档的值是带有errorMessages的json。 这是UpdateRequest对象:

  

更新{[.hierarchies] [hierarchy] [ZEqi1GkByxIcUBtfsLRV],   doc_as_upsert [false],doc [index {[null] [null] [null],   source [{“ errorMessages”:“ {\” isFavourite \“:\”是\“,\”消息\“:\” hola \“}”}]}}]],   scripted_upsert [false],detect_noop [true]}

对这个问题有任何想法吗?

1 个答案:

答案 0 :(得分:0)

errorMessages应该用下面的对象数组而不是字符串值表示:

{
  "errorMessages": [
    {
      "isFavourite": "yes",
      "message": "hola"
    }
  ]
}