弹性search映射与蒙哥连接器在帆船上丢失

我正在开发一个使用MongoDB,Sails JS和ElasticSearch的应用程序。

MongoDB用于编写为应用程序检索的logging。 ElasticSearch用于search文本和地理位置的距离search等

我正在使用mongo-connector来保持我的数据从MongoDB同步到ElasticSearch。

问题是,我不能维护我的geo_point映射的字段,存储纬度和经度或父母/孩子或分析器等。每次帆服务器被取消,我看到在elasticsearch日志中所有的映射被删除,创build和更新,并且我失去了geo_point的映射,这个映射是在每个东西都启动并运行之后通过REST手工创build的,或者即使我已经在sails js的引导时创build了映射(作为解决方法)。

我也试图创build一个映射文件,并将其放置在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" } } } } } 

还尝试使用模板来创build映射,但在此之后,mongo连接器踢入并覆盖映射。

截至目前,我只能做这个工作是停止mongo连接器,删除oplog.timestamp文件,启动sails服务器(这里在引导时间,我删除并重新创build该文档的映射),然后启动mongo连接器。 但是如果我们放弃一步,就会造成事故。

我在做任何错误的事情,还是有一个更好的方法来同步mongodb到elasticsearch,而不会丢失自定义映射或替代mongo连接器。

根据文档 ,如果你在文件系统上安装映射,文件必须命名为<your_mapping>.json所以在你的情况下,它应该命名为locations.json并放置在

 elasticsearch/config/mappings/_default/locations.json 

要么

 elasticsearch/config/mappings/<your_index_name>/locations.json 

而且,映射文件不应该包含mappings关键字,而应该看起来像这样:

  { "locations" : { "dynamic": "false", "properties":{ "location": { "type": "geo_point" } } } } 

正确命名映射文件和文件夹后,应该再试一次。