【发布时间】:2016-12-01 07:04:10
【问题描述】:
我在 Elasticsearch 中有一个索引,其中有一个 geo_point 字段。 映射文件有点像这样。
curl -XPUT 'localhost:9200/test_geo5' -d'
{
"mappings":{
"test_geo5":{
"properties":{
"lat":{ "type": "string","index": "not_analyzed"},
"lon":{ "type": "string","index": "not_analyzed"},
"message_geocoordinates":{ "type": "geo_point"}
}
}
}
}'
我想使用 java 代码插入 message_geocoordinates。
所以我写了这样的java代码
String latitude= xxxxx;
String longitude= yyyy;
String message_geocordinates= latitude+","+longitude;
JSONObject jj = new JSONObject();
jj.put("lat", latitude);
jj.put("lon", longitude);
jj.put("message_geocordinates", message_geocordinates);
IndexResponse response = client.prepareIndex("test_geo5", "iiiii").setSource(jj.toString()).execute().actionGet();
我尝试将它插入 Elasticsearch。但我收到了以下异常。
MapperParsingExceptionfailed to parse; nested: IllegalStateException[Mixing up field types: class org.elasticsearch.index.mapper.core.StringFieldMapper$StringFieldType != class org.elasticsearch.index.mapper.geo.BaseGeoPointFieldMapper$GeoPointFieldType on field message_geocoordinates];
所以它说我的 message_geocoordinates 字段在 java 中是 String 但它是用于弹性搜索的 GeoPointFieldType。
如何使用 java 代码将 geopoint 字段插入到 elasticsearch 中。
【问题讨论】:
标签: java elasticsearch logstash geocoding elastic-stack