我想在带有配置的ElasticSearch中创建索引。我想在elasticSearch中使用地理距离查询-> https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-distance-query.html
我有一个Java类,正在使用ElasticSearch拥有的GeoPoint对象,该对象来自: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”:“ keyword”,我希望“ 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。还是可能会有某种方法?
感谢阅读我的问题