我收到了QueryParsingException[[listings] failed to find geo_point field [location.coords]]; }]
并且无法弄清楚原因。
我的查询
esClient.search({
index: 'listings',
body: {
query: {
filtered: {
query: {
match_all: {}
},
filter: {
geo_distance: {
distance: '10km',
'location.coords': {
lat: parseFloat(query.point.lat),
lon: parseFloat(query.point.lon)
}
}
}
}
}
}
}, function(err, response) {
if(err) return console.log(err);
console.log(response);
});
我的映射(如你所见,我确实使用了geo_point类型)
body: {
properties: {
location: {
type: 'object',
properties: {
country: {
type: 'integer'
},
address: {
type: 'string'
},
suburb: {
type: 'string'
},
coords: {
type: 'geo_point',
precision: '3m'
}
}
}
}
}
编辑:
在查找http://localhost:9200/listings/_mapping/my-mapping后,我注意到coords字段的lat,lon设置为double - 这可能与它有关。
答案 0 :(得分:1)
好的,事实证明这是因为我如何定义geo_point的精度(需要包含在fielddata属性中),奇怪的是JS api我使用了没有扔掉我记得的任何错误:
<强>正确:强>
coords: {
type: 'geo_point',
fielddata: {
format: 'compressed',
precision: '3m'
}
}
<强>不正确:强>
coords: {
type: 'geo_point',
precision: '3m'
}
}
瞧......