【发布时间】:2015-06-15 12:46:29
【问题描述】:
我正在尝试搜索以前添加到索引中的文档,该索引已配置为允许地理空间查询(或者我认为是这样)。
我的 elasticsearch 实例托管在 qbox.io 上。
这是我编写的从命令行创建索引的代码
curl -XPOST username:password@instance-id.qbox.io/events -d '{
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"mygeopoints": {
"properties": {
"geopoint": {
"type": "geo_point",
"lat_lon" : true
},
"radius": {
"type": "long"
}
}
}
}
}'
据我了解,我应该在我的 events 索引和我想要对其执行的搜索类型之间创建一个映射。
这是我编写的用于创建测试文档的代码:
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: 'username:password@instance-id.qbox.io'
});
client.create({
index: 'events',
type: 'geo_point',
body: {
location: {
lat: 51.507351,
lon: -0.127758
}
}
}, console.log);
这是我为搜索给定半径的文档而编写的代码
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: 'username:password@instance-id.qbox.io'
});
client.search({
filtered: {
query: {
match_all: {}
},
filter: {
geo_distance: {
distance: '1km',
location: {
lat: 48.507351,
lon: -0.127758
}
}
}
}
}, console.log);
我的问题是event 索引的所有文档总是显示出来,所以我没有成功地使用地理空间查询进行过滤;您是否发现任何错误,或者您有任何我可以遵循的指南来执行此操作?我搜索了一下,只找到了一些信息。
【问题讨论】: