我的课

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/

10-11 10:34