我正在使用mongodb、sails js和elasticsearch开发一个应用程序。
mongodb用于写入为应用程序检索的记录。elasticsearch用于搜索文本和地理位置距离搜索等。
我正在使用mongo connector将我的数据从mongodb同步到elasticsearch。
问题是,我无法维护存储lat和lon或父/子或分析器等字段的geo_点Map。每次提升sails服务器时,我都会在elasticsearch日志中看到所有Map都被删除、创建和更新,我失去了geo_点的Map,它是在每件事情都启动并运行之后,或者即使我在sails js引导时创建了Map(作为一种解决方法),通过rest手动创建的。
我还尝试创建一个Map文件,并将其放在elasticsearch/config/mappings/index/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"
}
}
}
}
}
还尝试使用模板来创建Map,但之后mongo连接器将启动并覆盖Map。
到目前为止,我唯一能做的就是停止mongo connector,删除oplog.timestamp文件,启动sails服务器(在引导时我删除并重新创建该文档的Map),然后启动mongo connector。但如果我们放弃一步,就会造成事故。
我是否做错了什么,或者是否有更好的方法将mongodb同步到elasticsearch,而不丢失自定义Map或其他mongo连接器。
1条答案
按热度按时间lawou6xi1#
根据文档,如果在文件系统上安装Map,则必须将文件命名为
<your_mapping>.json
所以在你的情况下它应该被命名为locations.json
并被置于或
此外,Map文件不应包含
mappings
关键字,改为如下所示:请在正确命名Map文件和文件夹后重试。