我是ElasticSeach的新手,并且我已经索引了elasticseach集群中的城市列表。每个城市包含城市,州,地点(经纬度和长度)等详细信息。ElasticSearch SearchParseException:解析失败[解析源失败]使用geo_distance过滤器时
现在我的要求是搜索特定位置的20公里范围内的城市,为此我需要经过拉特朗已经被索引到集群中的特定城市。
这里是我的索引数据显示在elasticsearch的头插件的用户界面:
{
"_index": "us_large_cities",
"_type": "city",
"_id": "AVqDpwkjfjWoT7yVe_qt",
"_version": 1,
"_score": 1,
"_source": {
"city": "Lincoln",
"state": "NE",
"location": {
"lat": "40.8000011",
"lon": "-96.6669599"
}
}
}
这里是我对搜索出来的数据curl命令:
curl -XGET 'http://localhost:9200/us_large_cities/city/_search?pretty=true' -d '
{
"query": {
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "20km",
"location" : {
"lat" : 40.8000011,
"lon" : -96.6669599
}
}
}
}
}
}'
,我得到的SearchParseException这里是完整的堆栈跟踪:
org.elasticsearch.search.SearchParseException: [us_large_cities][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [
{
"query": {
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "20km",
"location" : {
"lat" : 40.8000011,
"lon" : -96.6669599
}
}
}
}
}
}]]
at org.elasticsearch.search.SearchService.parseSource(SearchService.java:687)
at org.elasticsearch.search.SearchService.createContext(SearchService.java:543)
at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:515)
at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:277)
at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)
at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)
at org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.elasticsearch.index.query.QueryParsingException: [us_large_cities] failed to find geo_point field [location]
at org.elasticsearch.index.query.GeoDistanceFilterParser.parse(GeoDistanceFilterParser.java:159)
at org.elasticsearch.index.query.QueryParseContext.executeFilterParser(QueryParseContext.java:347)
at org.elasticsearch.index.query.QueryParseContext.parseInnerFilter(QueryParseContext.java:328)
at org.elasticsearch.index.query.FilteredQueryParser.parse(FilteredQueryParser.java:74)
at org.elasticsearch.index.query.QueryParseContext.parseInnerQuery(QueryParseContext.java:281)
at org.elasticsearch.index.query.IndexQueryParserService.innerParse(IndexQueryParserService.java:382)
at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:281)
at org.elasticsearch.index.query.IndexQueryParserService.parse(IndexQueryParserService.java:276)
at org.elasticsearch.search.query.QueryParseElement.parse(QueryParseElement.java:33)
at org.elasticsearch.search.SearchService.parseSource(SearchService.java:671)
... 9 more
我已经搜索出各种pos但是没有人为我工作。 任何建议,我犯了什么错误?
其中弹性您使用的版本? – paqash
它的1.4.4版本 – KayV