我試圖搜索以前添加到索引的文檔,該索引已被配置爲允許地理空間查詢(或者我認爲)。
我的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