我的课
package be.smartask.data;
import be.smartask.core.api.Language;
import org.elasticsearch.common.geo.GeoPoint;
import java.util.Date;
import java.util.Map;
/**
* @author Glenn Van Schil
* Created on 26/01/2016
*/
public class CityValue extends Value {
private int radius;
private Map<Language, String> translations;
private GeoPoint geoPoint;
private Suggest suggest;
public CityValue() {
}
public CityValue(Date createdOn, String id, Date lastUpdatedOn, String fieldId, String projectId, String userId, GeoPoint geoPoint, int radius, Suggest suggest, Map<Language, String> translations) {
super(createdOn, id, lastUpdatedOn, fieldId, projectId, userId);
this.geoPoint = geoPoint;
this.radius = radius;
this.suggest = suggest;
this.translations = translations;
}
public GeoPoint getGeoPoint() {
return geoPoint;
}
public void setGeoPoint(GeoPoint geoPoint) {
this.geoPoint = geoPoint;
}
public void setGeoPoint(double lat, double lon) {
this.geoPoint = new GeoPoint(lat, lon);
}
public int getRadius() {
return radius;
}
public void setRadius(int radius) {
this.radius = radius;
}
public Suggest getSuggest() {
return suggest;
}
public void setSuggest(Suggest suggest) {
this.suggest = suggest;
}
public Map<Language, String> getTranslations() {
return translations;
}
public void setTranslations(Map<Language, String> translations) {
this.translations = translations;
}
}
我的 map
{
"cityvalue": {
"dynamic_templates": [{
"notanalyzed": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
}],
"properties": {
"createdOn": {
"type": "date",
"format": "date_hour_minute_second"
},
"lastUpdatedOn": {
"type": "date",
"format": "date_hour_minute_second"
},
"suggest": {
"type": "completion",
"preserve_separators": false,
"index_analyzer": "simple",
"search_analyzer": "simple",
"payloads": false
},
"geoPoint": {
"type": "geo_point"
}
}
}
}
当我尝试索引该对象时,出现以下错误
为什么会引发此错误,我该如何解决?
我一直使用Spring-data与Elastic进行交互,Elastic也具有GeoPoint对象,并且在相同的映射下也可以正常工作,但是因为我删除了Spring-data,所以我不得不从
org.springframework.data.elasticsearch.core.geo.GeoPoint 到 org.elasticsearch.common.geo.GeoPoint
最佳答案
我通过不使用Elastic GeoPoint对象解决了这一问题。我创建了以下对象,并将Elastic的GeoPoint的所有用法替换为我的对象。
package be.smartask.core.api.data;
/**
* @author Glenn Van Schil
* Created on 20/04/2016
*/
public class GeoPoint {
double lat, lon;
public GeoPoint() {
}
public GeoPoint(double lat, double lon) {
this.lat = lat;
this.lon = lon;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
public double getLon() {
return lon;
}
public void setLon(double lon) {
this.lon = lon;
}
}
我的映射不变。
关于java - 无法使用Java API在ElasticSearch 1.7.3中索引GeoPoints,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36720059/