elasticsearchMap在使用mongo连接器的帆式升降机上丢失

oxf4rvwz  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(294)

我正在使用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连接器。

ljsrvy3e

ljsrvy3e1#

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

elasticsearch/config/mappings/_default/locations.json

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

此外,Map文件不应包含 mappings 关键字,改为如下所示:

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

请在正确命名Map文件和文件夹后重试。

相关问题