Elasticsearch 映射在 mongo-connector 的帆升降机上丢失
Elasticsearch Mapping lost on sails lift with mongo-connector
我正在使用 MongoDB、Sails JS 和 ElasticSearch 开发应用程序。
MongoDB 用于写入为应用程序检索的记录。 ElasticSearch 用于搜索文本和地理位置距离搜索等
我正在使用 mongo-connector 使我的数据从 MongoDB 同步到 ElasticSearch。
问题是,我无法为存储纬度和经度或 parent/child 或分析器等的字段维护 geo_point 的映射。每次 sails 服务器被解除时,我都会在 elasticsearch 中看到删除、创建和更新所有映射的日志,我丢失了 geo_point 的映射,该映射是在一切正常后通过 REST 手动创建的 运行,或者即使我已经在bootstrap 航行时间 js(作为解决方法)。
我也尝试创建一个映射文件并将其放在 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"
}
}
}
}
}
还尝试使用模板创建映射,但之后 mongo-connector 启动并覆盖映射。
到目前为止,我唯一能做的就是停止 mongo-connector,删除 oplog.timestamp 文件,启动 sails 服务器(这里是 bootstrap 我删除和为该文档重新创建映射)然后开始 mongo-connector。但是如果我们忘了做一步,这就会造成事故。
我是不是做错了什么或者是否有更好的方法将 mongodb 同步到 elasticsearch 而不会丢失自定义映射或替代 mongo-connector.
根据 documentation,如果您在文件系统上安装映射,则文件必须命名为 <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"
}
}
}
}
您应该在正确命名映射文件和文件夹后重试。
我正在使用 MongoDB、Sails JS 和 ElasticSearch 开发应用程序。
MongoDB 用于写入为应用程序检索的记录。 ElasticSearch 用于搜索文本和地理位置距离搜索等
我正在使用 mongo-connector 使我的数据从 MongoDB 同步到 ElasticSearch。
问题是,我无法为存储纬度和经度或 parent/child 或分析器等的字段维护 geo_point 的映射。每次 sails 服务器被解除时,我都会在 elasticsearch 中看到删除、创建和更新所有映射的日志,我丢失了 geo_point 的映射,该映射是在一切正常后通过 REST 手动创建的 运行,或者即使我已经在bootstrap 航行时间 js(作为解决方法)。
我也尝试创建一个映射文件并将其放在 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"
}
}
}
}
}
还尝试使用模板创建映射,但之后 mongo-connector 启动并覆盖映射。
到目前为止,我唯一能做的就是停止 mongo-connector,删除 oplog.timestamp 文件,启动 sails 服务器(这里是 bootstrap 我删除和为该文档重新创建映射)然后开始 mongo-connector。但是如果我们忘了做一步,这就会造成事故。
我是不是做错了什么或者是否有更好的方法将 mongodb 同步到 elasticsearch 而不会丢失自定义映射或替代 mongo-connector.
根据 documentation,如果您在文件系统上安装映射,则文件必须命名为 <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"
}
}
}
}
您应该在正确命名映射文件和文件夹后重试。