jam*_*wis 4 mongodb mongoid elasticsearch mongodb-.net-driver
一些背景:
我通过mongo-elasticsearch河将MongoDB与ElasticSearch结合使用.在Elasticsearch中,我希望我的文档结构如下所示:
{
"_id": "SomeId-AnotherId",
... // all the other lovely denormalized data
}
Run Code Online (Sandbox Code Playgroud)
SomeId-AnotherId是我在对数据进行非规范化时创建的.我需要这种结构的原因是我需要能够说http://elasticsearch/index/type/SomeId-AnotherId要检索文档.
我对我的数据进行了非规范化(一个C#应用程序),然后我插入MongoDB(这些数据然后通过河流进入ES,如上所述).当我插入MongoDB时,我目前的印象是我需要在我的模型上设置一个BsonId,Mongo用它来索引文档.这可以是ObjectId或任何其他类型,如string或int等,只要我添加[BsonId]属性.
我的模型看起来像这样:
public class Model {
[BsonId]
public string Id {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我这样设置:
model.Id = string.format("{0}-{1}", someId, anotherId);
Run Code Online (Sandbox Code Playgroud)
问题
目前我看到大约1,500个文件从〜10,000的插入进入Mongo.我看了一下我为模型对象生成的id,肯定有超过12个字节.mongo会拒绝那些而不是写它们吗?
Bson Id是12字节 - 这是否意味着如果我创建自己的ID(格式为:"SomeId-AnotherId"),它也应该只有12个字节长?无论如何围绕这个?
我不想对这些文档使用mongos默认的objectId,因为如上所述,一旦doc在elasticsearch中,我希望能够以特定的方式获取文档(在URI中使用"SomeId-AnotherId").
最后的笔记:
我知道我可以在我的模型中添加另一个ID属性,例如ElasticId,然后配置Elasticsearch来查找此属性并将其用作elasticsearch文档的_id.如果我这样做,那么我可以使用Mongos默认ID,一切都会好的.但是,我会牺牲弹性搜索性能,我还需要在弹性搜索中存储一个我不想要的额外字段.
对不起大规模的脑转储顺便说一下!! :)
| 归档时间: |
|
| 查看次数: |
9884 次 |
| 最近记录: |