Reputation: 19414
I'd like to persist some JSON to elastic(search) that looks a little like this:
{
"name": "value",
"points": [
{ "lat": 0.0, "lon": 0.0 },
{ "lat": 1.0, "lon": 1.0 }
]
}
Points being a list of the type geo_point in elastic. Because they're geo_point values I need to define the index mapping, but the closest I can see is to do this:
"place": {
"properties": {
"name": {
"type": "string"
},
"points": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
Which would mean having each point be a map with a single key of location and a geo_point value. I just want the geo_points, is this possible?
Upvotes: 5
Views: 3733
Reputation: 16335
You can define your mapping as below :
"place": {
"properties": {
"name": {
"type": "string"
},
"points": { // <-- it can also be a multi-valued field if you insert multiple values, as skal88 mentioned, your json would perfectly fit in this mapping.
"type": "geo_point"
}
}
}
Upvotes: 5
Reputation: 484
Yes. When you define a mapping, the values inside field can be single or array of the specific "type". You need only insert on this value a array of geo_points. Some like this:
{
"name": "some name",
"points": [
{ lat: 41.12, lon: 2.023 },
{ lat: 30, lon: 4.1 }
]
}
Upvotes: 4