弹性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" } } } }
正确命名映射文件和文件夹后,应该再试一次。