我试图搜索以前添加到索引的文档,该索引已被配置为允许地理空间查询(或者我认为)。
我的elasticsearch实例托管在qbox.io上。Elasticsearch地理空间搜索,索引设置问题
这是我写的命令行
curl -XPOST username:[email protected]/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:[email protected]'
});
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:[email protected]'
});
client.search({
filtered: {
query: {
match_all: {}
},
filter: {
geo_distance: {
distance: '1km',
location: {
lat: 48.507351,
lon: -0.127758
}
}
}
}
}, console.log);
我的问题是,所有的证件event
索引总是显示出来,所以我没有用地理空间查询成功过滤;你发现任何错误,或者你有任何指导我可以遵循这样做吗?我搜索过,只找到了一些信息。
非常感谢您的回答,我会尽快回复您! –
我试过这个,我得到了以下错误:https://gist.github.com/lazywithclass/099ef5ec61f870a07e56 如果我从查询的“body”中删除'filtered'属性,虽然我得到了预期的结果,请问你能指出一些情况,或者请指点一下正确的方向吗? 感谢您的帮助,非常感谢! –
哎呀,我的坏,我复制/粘贴你的查询,并忘记把它放在一个'查询'。上面更新了我的答案。 – Val