【发布时间】:2019-04-25 21:50:07
【问题描述】:
我正在使用 NEST (.NET 4.8) 导入我的数据,但在让映射在 NEST 7.0.0-alpha1 中工作时遇到问题。
我有以下类结构:
class LinkActor
{
public Actor Actor { get; set; }
}
abstract class Actor
{
public string Description { get; set; }
}
class Person : Actor
{
public string Name { get; set; }
}
我通过这种方式连接到 Elasticsearch:
var connectionSettings = new ConnectionSettings(new Uri(connection));
connectionSettings.DefaultIndex(indexName);
var client = new ElasticClient(connectionSettings);
实际数据如下:
var personActor = new Person
{
Description = "Description",
Name = "Name"
};
var linkActor = new LinkActor
{
Actor = personActor
};
并且数据的索引是这样的:
result = client.IndexDocument(linkActor);
使用 NEST 6.6 我在 Elasticsearch 6.5.2 中获得以下数据:
"actor": {
"name": "Name",
"description": "Description"
}
但是,当使用 NEST 7.0.0-alpha1 时,我在 Elasticsearch 7.0.0 中得到以下数据:
"actor": {
"description": "Description"
}
所以缺少具体类的数据。我显然缺少/不了解一些新的地图功能,但我对 AutoMap 的尝试失败了:
client.Map<(attempt with each of the above classes)>(m => m.AutoMap());
是否仍然可以从 NEST 7.0.0-alpha1 中的具体类映射数据?
【问题讨论】:
-
我怀疑这是因为
LinkActor上的属性类型是Actor并且序列化程序使用它而不是检查分配给该属性的运行时类型。您介意在github.com/elastic/elasticsearch-net/issues 上为此打开一个问题吗? -
嗨@Russ Cam,很抱歉回复晚了。我打开了一个问题here 并创建了一个存储库,我试图在其中更容易重现问题。该存储库已在问题中链接。
标签: elasticsearch nest