1

Я пытаюсь создать вложенный документ в ElasticSearch.elasticsearch mapping parser exception

Структура: название, название, комментарии комментарии - это вложенный документ - внутри этого - комментарий & 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 вы пытаетесь обработать свойство «комментарий» как вложенный объект, так и строку.

Форматирование 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 - спасибо за Ваш ответ. как обновить отображение с помощью свойства «text» и переместить содержимое комментария? –

+0

Я отредактировал свой ответ на примере того, что я буду делать в этой ситуации. – ryanlutgen

+0

Спасибо за ваш ответ. тот же случай работает и для меня! но я ожидаю, что я ожидаю, например, еще один вложенный документ внутри текста. –

Смежные вопросы