Я использую NodeJS ElasticSearch с ElasticSearch 7.0.Я создаю тип отображения geo_point
для определенного поля, но он не показывает тип geo_point в _mapping
.Я пытался искать, используя filter.geo_distance
, я получил failed to find geo point field
.
Node ElasticSearch Mapping
client.indices.putMapping({
index: 'listing',
type: 'detail',
body: {
properties: {
'listing_coordinates': {
"type": "geo_point"
}
}
}
}, function(err) { console.log(err) })
Ошибка сопоставления
[invalid_argument_exception] Типы не могут быть предоставлены в путзапросы на сопоставление, если для параметра include_type_name не установлено значение true.
/ перечисление / _mapping
mappings: {
properties: {
"listing_coordinates": {
"properties": {
"lat": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"lon": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
}
}
Поиск узла
client.search({
index: 'listing',
type: 'detail',
size: 5,
body: {
query : {
"bool": {
"filter": {
"geo_distance" : {
"distance" : "500km",
"listing_coordinates" : {
"lat" : 3.0567521,
"lon" : 101.5854671
}
}
}
}
}
}
}
Ошибка поиска
[query_shard_exception] не удалось найти поле geo_point [перечисление_координат]
У меня были поля сопоставления датмой список, он работал хорошо.