elasticsearch 弹性介质中地点阵场的映射
我想将一些JSON持久化到elastic(搜索),看起来有点像这样:
elasticsearch 弹性介质中地点阵场的映射,
elasticsearch,indexing,mapping,
elasticsearch,Indexing,Mapping,我想将一些JSON持久化到elastic(搜索),看起来有点像这样: { "name": "value", "points": [ { "lat": 0.0, "lon": 0.0 }, { "lat": 1.0, "lon": 1.0 } ] } { "name": "some name", "points": [ { lat: 41.12, lon: 2.023 }, { lat: 30, lon: 4.1 } ] } 点是弹性体中
{
"name": "value",
"points": [
{ "lat": 0.0, "lon": 0.0 },
{ "lat": 1.0, "lon": 1.0 }
]
}
{
"name": "some name",
"points": [
{ lat: 41.12, lon: 2.023 },
{ lat: 30, lon: 4.1 }
]
}
点是弹性体中geo_点类型的列表。因为它们是地理点值,我需要定义索引映射,但我能看到的最接近的方法是:
"place": {
"properties": {
"name": {
"type": "string"
},
"points": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
这意味着每个点都是一张地图,带有一个位置键和一个地理点值。我只想要地理点,这可能吗?是的。定义映射时,字段中的值可以是单个值,也可以是特定“类型”的数组。您只需在此值上插入一个geo_点数组。有些人喜欢这样:
{
"name": "value",
"points": [
{ "lat": 0.0, "lon": 0.0 },
{ "lat": 1.0, "lon": 1.0 }
]
}
{
"name": "some name",
"points": [
{ lat: 41.12, lon: 2.023 },
{ lat: 30, lon: 4.1 }
]
}
您可以按以下方式定义映射:
"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"
}
}
}
“地点”:{
“财产”:{
“姓名”:{
“类型”:“字符串”
},
“点”:{//请记住,新的ElasticSearch 6.7(抛出警告)和7.0必须按如下方式放置映射:放置地理点测试/_映射?包含类型名称=假{“属性”:{“位置”:{“类型”:“地理点”}