【发布时间】:2016-03-02 11:17:50
【问题描述】:
这是我的文件:
[ElasticsearchType(Name = "MyDoc")]
public class MyDoc: Dictionary<string, object>
{
[String(Store = false, Index = FieldIndexOption.NotAnalyzed)]
public string text { get; set; }
}
如您所见,它继承自 Dictionary<string, object>,因此我可以动态地向它添加字段(这是使聚合工作的必要条件)
我在这里存储映射:
client.Map<MyDoc>(m => m.Index("myindexname").AutoMap());
现在我创建一个新记录并存储它:
var rec= new MyDoc();
rec.Add("id", "mystuff");
rec.text = "mytext";
client.Index(rec, i => i.Index("myindexname"));
client.Refresh("myindexname");
记录得到实际存储,但文本字段没有持久化。这是从 ElasticSearch 2.0 返回的 JSON
{
"_index": "myindexname",
"_type": "MyDoc",
"_id": "AVM3B2dlrjN2fcJKmw_z",
"_version": 1,
"_score": 1,
"_source": {
"id": "mystuff"
}
}
如果我从MyDoc 中删除基类,text 字段被正确存储,但显然字典内容不是(我还需要删除.Add() 位,因为文档不是从@987654329 继承的@)。
如何同时存储text字段和字典内容?
【问题讨论】:
标签: c# asp.net-web-api elasticsearch nest nest2