如何解决名称为“元数据”的字典字段
这个问题源于我的previous post,但我认为它值得单独讨论。
在我的文档模型中,我创建了两个 Dictionary<string,object>
类型的字段:
public class Document
{
// some fields ....
public Dictionary<string,object> Permissions { get; set; }
public Dictionary<string,object> Metadata { get; set; }
}
我使用默认索引策略(让弹性处理映射)。
private static void Main(string[] args)
{
var settings = new ConnectionSettings(new Uri("http://127.0.0.1:9200"));
settings.EnableDebugMode();
settings.DefaultMappingFor<Document>(m => m
.IndexName("documents")
);
var client = new Elasticclient(settings);
foreach (var doc in SampleDocuments.Documents)
{
var result = client.IndexDocument(doc);
Console.WriteLine($"Indexing {doc.Name}: {result.IsValid}");
}
}
现在,查看来自 kibana 的文档,我注意到只有 Metadata
字段中的字段是动态映射的。来自 Permissions
字段的那些属于 unkNown type
。
注意左侧的图标。进一步调查表明,将 Metadata
字段名称更改为其他任何名称(如 Metadata1
)会禁用自动检测类型(它的索引方式与 Permissions
相同)。
我的问题是:这个名字有什么特别之处?第二个问题是:如何以与 Permissions
相同的方式强制弹性索引 Metadata
字段?我尝试添加 [nested]
和 [Object]
映射,还在 AutoMap()
中设置最大递归级别,但没有成功。
解决方法
您只需在堆栈管理 > 索引模式 > 刷新中refresh your index pattern 以确保获取最新的映射更改。
另外值得注意的是,从 7.11.0 开始,作为索引模式的 refresh button has disappears 现在会在需要时自动刷新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。