Я хочу создать индекс в ElasticSearch с настройкой.Я хочу использовать запрос географического расстояния вasticSearch -> https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-query.html
У меня есть класс Java, и я использую объект GeoPoint, который есть у ElasticSearch и который принадлежит: org.elasticsearch.common.geo.GeoPoint;
@Data
@EqualsAndHashCode(callSuper = false)
public class GeofenceDocument extends AbstractBaseDocument {
@Id
private Double radius;
private GeoPoint location;
private String geofenceName;
private Set<String> pushIds;
}
Я вставляю этот класс точно так, как он использует мой java IndexRequest.Я смотрю из kibana и вижу результат моего местоположения как
"location": {
"properties": {
"geohash": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"lat": {
"type": "float"
},
"lon": {
"type": "float"
}
}
},
Я не хочу "type": "ключевое слово", я хочу "type": "geo_point", чтобы ElasticSearch мог запрашивать в пределах заданной широты и долготы.
Я не хочу этого, потому что для использования гео-запроса мне нужно настроить так:
В нижеприведенной настройке я сделал это вручную из kibana
PUT myindex
{
"mappings": {
"_doc": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
Когда я настраиваюсь таким образом, и если я проверяю этот индекс
"mappings": {
"_doc": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
},
Итак, я сделал это, я настроил его вручную и попытался вставить мои классы Java, это выдает мне ошибку:
[type=illegal_argument_exception, reason=[location] is defined as an object in mapping [geofence] but this name is already used for a field in other types]]]
Так что типы не совпадают.Если бы я мог настроить, а затем вставить документы java в свой индекс, это было бы замечательно, но я не смог бы его настроить.
В принципе, я хочу просто отлично настроить использование гео-запроса в ES.Я не могу напрямую вставить, потому что тип не будет Geo_point.Или может быть будет какой-то способ?
Спасибо, что прочитали мою проблему