我正在開發一個使用MongoDB,Sails JS和ElasticSearch的應用程序。Elasticsearch映射與蒙哥連接器在帆船上丟失
MongoDB用於寫入爲應用程序檢索的記錄。 ElasticSearch用於搜索文本和地理位置距離搜索等。
我使用mongo連接器來保持我的數據從MongoDB到ElasticSearch同步。
問題是,我無法保存geo_point的映射,用於存儲經緯度或父/子或分析器等的字段。每次啓動服務器時,我都會在elasticsearch日誌中看到所有映射都被刪除,創建和更新,並且我失去了geo_point的映射,這是通過REST手動創建的,每個東西都啓動並運行後,或者即使我已經在sails js的引導時創建映射(作爲解決方法)。
我也試圖創建一個映射文件,並把它放在elasticsearch /配置/映射/指數/ mymapping.json但我得到一個錯誤
Caused by: org.elasticsearch.index.mapper.MapperParsingException: Root type mapping not empty after parsing! Remaining fields: ...
在這裏,我嘗試了所有的組合,使這項工作但沒有成功例如
{"mappings" : {
"locations" : {
"dynamic": "false",
"properties":{
"location": {
"type": "geo_point"
}
}
}
}
}
使用模板來創建映射也試過,但在蒙戈連接器後踢和覆蓋映射。
截至目前,我只能夠使這項工作是停止mongo連接器,刪除oplog.timestamp文件,啓動sails服務器(這裏在引導時間,我刪除並重新創建該文檔的映射),然後啓動mongo連接器。但是,如果我們放棄了一步,這會造成意外。
我在做任何錯誤的事情,還是有更好的方式來同步mongodb到elasticsearch,而不會丟失自定義映射或替代mongo連接器。