0
我們將它看起來像這樣的文件:映射ElasticSearch的GeoPoint字段
{
"id": "dQesbpxeQniUWXpsnjPQ",
"title": "Golf in Hamburg, Altona",
"user": "CtGjEaDxSrhPbf7W7NcH",
"location": {
"id": "Q6sZhRHdiS3mP2innbJ9",
"name": "Hamburg, Altona",
"lat": 53.55,
"lon": 9.93333,
"slug": "hamburg-altona"
},
"_type": "announcement"
}
我們需要announcement.location.slug
是not_analyzed
(這是一個蛞蝓,畢竟)
但是映射不會拿,我們有這些設置:
Tire.index(@@index_name) do
delete
create(mappings: {
announcement: {
properties: {
"id" => { type: 'string', index: 'not_analyzed' },
"user" => { type: 'string', index: 'not_analyzed' },
"location" => {
type: 'geo_point',
properties: {
"slug" => { type: 'string', index: 'not_analyzed' }
}
},
"times" => { type: 'string', analyzer: 'keyword' },
"sport" => {
"properties" => {
"slug" => { type: 'string', index: 'not_analyzed' }
}
}
}
}
},
settings: {
index: {
number_of_shards: 1,
number_of_replicas: 0
}
})
refresh
end
注:同樣映射curl
語法也沒有按」工作,但是對於SO的可讀性較差,所以我發佈了Ruby代碼。
好像geo_point
正在重寫文檔那部分的所有其他映射。 The documentation似乎同意。
我敢肯定,有一種方法可以使用lat_lon
選項,但我找不到任何有關如何工作的文檔。 (我假設一個個體lat
和lon
領域的地圖,lat_lon
設置)
它也有可能,我希望利用the multi
field type但似乎並沒有主文件的屬性應用到整個子樹。
如何繼續而不必更改我的整個數據模型?
自豪地給你你的第一個upvote :) – javanna
我們可以很容易地更改'to_indexed_hash'方法,並且更新映射非常好,幸運的是我們的測試套件捕獲了一堆小錯誤,都很容易修復。感謝您對我的假設的確認! –
謝謝@javanna ;-) – dadoonet