1

我想在ElasticSearch中创建一个嵌套的文档。elasticsearch映射解析器异常

结构: 标题,名称,评论 评论是一个嵌套的文件 - 内部 - 评论& Star_Rating。 内部评论,名称和地址。

这里是下面提到的查询。

PUT /sounduu 
    { 
    "mappings": { 
     "blogpost": { 
      "properties": { 
       "title": { 
        "type": "string" 
       }, 
       "name": { 
        "type": "string" 
       }, 
       "comments": { 
        "properties": { 
         "comment": { 
          "properties": { 
           "name": { 
            "type": "string" 
           }, 
           "address": { 
            "type": "string" 
           } 
          } 
         }, 
         "star_rating": { 
          "type": "long" 
         } 
        } 
       } 
      } 
     } 
    } 
} 


PUT /sounduu/blogpost/1 
{ 
    "title": "someh_title", 
    "name":"soundy", 
    "comments": { 
     "comment":"kuu", 
     [{ 
      "name":"juwww", 
      "address":"eeeey" 
     }, 
     { 
      "name":"jj", 
      "address":oo" 
     }] 
    }, 
    "star_rating":6 
} 

错误:

{ 
    "error": { 
     "root_cause": [ 
     { 
      "type": "mapper_parsing_exception", 
      "reason": "object mapping for [comments.comment] tried to parse field [comment] as object, but found a concrete value" 
     } 
     ], 
     "type": "mapper_parsing_exception", 
     "reason": "object mapping for [comments.comment] tried to parse field [comment] as object, but found a concrete value" 
    }, 
    "status": 400 
} 

任何人都可以在这方面帮助?

回答

0

在您的PUT /sounduu/blogpost/1请求中,您试图将“comment”属性视为嵌套对象和字符串。

格式化您的要求的JSON,你可以观察到的问题:

{ 
    "title": "someh_title", 
    "name": "soundy", 
    "comments": { 
     "comment": "kuu", 
     [{ 
      "name": "juwww", 
      "address": "eeeey" 
     }, 
     { 
      "name": "jj", 
      "address": oo" 
     }] 
    }, 
    "star_rating":6 
} 

要么你需要更新你的映射包含一个“文本”属性,并相应地移动"comment": "kuu"内容,或者从您的请求中省略,使用您当前的映射。

例在这里 - 对于我来说,似乎是合乎逻辑组的一切,像这样:

PUT /sounduu 
    { 
    "mappings": { 
     "blogpost": { 
      "properties": { 
       "title": { 
        "type": "string" 
       }, 
       "name": { 
        "type": "string" 
       }, 
       "comments": { 
        "properties": { 
         "text" : { 
          "type": "string" 
         }, 
         "name": { 
          "type": "string" 
         }, 
         "address": { 
          "type": "string" 
         } 
        } 
       }, 
       "star_rating": { 
        "type": "long" 
       } 
      } 
     } 
    } 
} 

索引请求将随后样子:

{ 
    "title": "someh_title", 
    "name": "soundy", 
    "comments": [ 
     { 
      "text": "kuu", 
      "name": "juwww", 
      "address": "eeeey" 
     }, 
     { 
      "text": "kuu2", 
      "name": "jj", 
      "address": oo" 
     } 
    ], 
    "star_rating":6 
} 
+0

ryanlutgen - 感谢您的回复。如何使用“文本”属性更新映射并移动评论内容? –

+0

我已经编辑了我的答案,并举例说明了在这种情况下我会做什么。 – ryanlutgen

+0

感谢您的回答。同样的情况也适用于我!但是我期待的是,例如,我期待在文本中嵌入更多的文档。 –