Syed Mazreena Syed Mazreena - 3 months ago 87
JSON Question

object mapping [locations] can't be changed from nested to non-nested

Step1:



PUT http://localhost:9200/hindex

{
"mappings" : {
"hProvider":{
"properties": {
"iPid" : {
"type": "string"
},
"pType" : {
"type" : "string"
},
"pInfo" : {
"properties":{
"businessName": {
"type": "string"
},
"dob": {
"type": "string"
},
"firstName": {
"type": "string"
},
"gender": {
"type": "string",
"index": "not_analyzed"
}
}
},
"locations" : {
"type" : "nested",
"properties" : {
"addressInfo" : {
"properties" : {
"city": {
"type": "string",
"index": "not_analyzed"
},
"county": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
}
}


GET http://localhost:9200/hindex/_mapping

{"hindex":{"mappings":{"hProvider":{"properties":{"iPid":{"type":"string"},"locations":{"type":"nested","properties":{"addressInfo":{"properties":{"city":{"type":"string","index":"not_analyzed"},"county":{"type":"string","index":"not_analyzed"}}}}},"pInfo":{"properties":{"businessName":{"type":"string"},"dob":{"type":"string"},"firstName":{"type":"string"},"gender":{"type":"string","index":"not_analyzed"}}},"pType":{"type":"string"}}}}}}



  1. Inserting data



POST http://localhost:9200/hindex/prof/1/?_create

{
"iPid" : "xyz",
"pType" : "HealthCareProfessional",
"pInfo": {
"businessName" : "hdata",
"firstName" : "Dawoods",
"dob" : "11/18/1975",
"gender" : "male"
},
"locations" : [
{
"addressInfo" : { "city" : "Olney", "county" : "UnitedStates" }
},
{
"addressInfo" : { "city" : "Rivers", "county" : "United States" }
}
]
}


Response :

{"error":{"root_cause":[{"type":"remote_transport_exception","reason":"[node-1][10.194.153.161:9300][indices:data/write/index[p]]"}],"type":"illegal_argument_exception","reason":"object mapping [locations] can't be changed from nested to non-nested"},"status":400}


Have tried with different data-sets but no luck, what could be the error on the data ?

Val Val
Answer

Your third command is not correct, it's not running on the correct mapping type and it tries to create a new mapping type called prof with a non-nested locations field, which conflicts with the nested one in the hProvider mapping type in the same index.

Change it to this:

POST http://localhost:9200/hindex/hProvider/1/?_create
                                     ^
                                     |
                                change this